我正在处理下面的两个字符串
x1 <- "Unknown, because not discussed"
x2 <- "Not at goal, no."
我如何使用grepl函数来区分这两个字符串?
当我使用grepl("no", x1)
时,它显示为TRUE,这是不正确的。这是在not
或Unknown
中取消的。如何使用字符串解析功能明确检测单词no
的字符串?任何建议都非常感谢。
答案 0 :(得分:3)
您可以使用字边界\\b
来区分它们。 \\bno\\b
只会匹配no
,而不会包含前后字符:
grepl("\\bno\\b", x1)
# [1] FALSE
grepl("\\bno\\b", x2)
# [1] TRUE
答案 1 :(得分:3)
我可以想到几个匹配“不”而不是“不”的选项:
使用\b
“字边界”模式:
> x = c("Unknown, because not discussed", "Not at goal, no.")
> grepl("\\bno\\b", x)
[1] FALSE TRUE
使用[^t]
排除“not”:
> grepl("\\bno[^t]", x)
[1] FALSE TRUE
为了单独匹配单词“no”,单词边界选项"\\bno\\b"
可能是最好的。