r grepl 区分no和not

r grepl to distinguish between no and not

我正在处理如下两个字符串

      x1 <- "Unknown, because not discussed"

      x2 <- "Not at goal, no."

如何使用 grepl 函数来区分这两个字符串?

当我使用grepl("no", x1)时,它显示TRUE,这是不正确的。这是在选择 notUnknown 中的否。我如何使用字符串解析函数来显式检测带有单词 no 的字符串?非常感谢任何建议。

可以用字界线\b来区分。 \bno\b 将只匹配 no 而没有前后单词字符:

grepl("\bno\b", x1)
# [1] FALSE
grepl("\bno\b", x2)
# [1] TRUE

我能想到几个匹配选项 "no" 但不能 "not":

使用 \b "word boundary" 模式:

> 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" 可能是最好的。