Detecting exact matches using str_detect() in R无法为我提供清晰的解决方案。
如果我有
test <- c("HR", "p-value (stratified)", "HRf", "HR-fake", "p-value", "p-value (unstratified)")
want <- c(TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE)最好的方法就是
> test == "HR" | test == "p-value (stratified)"
[1] TRUE TRUE FALSE FALSE FALSE FALSE但是,为了学习,我希望在regex中这样做。然而,这些都不适合我。
> str_detect(testvec, "HR|p-value (stratified)")
[1] TRUE FALSE TRUE TRUE FALSE FALSE
> str_detect(testvec, "\\bHR\\b|\\bp-value (stratified)\\b")
[1] TRUE FALSE FALSE TRUE FALSE FALSE问题似乎是str_detect()是
str_detect("HRf","\\bHR\\b") 1 FALSE
str_detect("HR-fake","\\bHR\\b") 1真
str_detect("HR - fake","\\bHR\\b") 1真
即使使用“p值(分层)”,
str_detect("p-value (stratified)","p-value (stratified)") 1 FALSE
是什么引起了这个问题?谢谢。
发布于 2021-10-13 17:07:42
除了注释,我们需要指定开始(^)和结束($),否则它可以匹配HR-fake,尽管我们可以阻止HRf与word边界(\\b)的匹配。
str_detect(test, regex("^(HR|p-value \\(stratified\\))$"))
[1] TRUE TRUE FALSE FALSE FALSE FALSEhttps://stackoverflow.com/questions/69559443
复制相似问题