r grepl来区分no和not

时间:2017-07-21 03:31:20

标签: r string grepl

我正在处理下面的两个字符串

      x1 <- "Unknown, because not discussed"

      x2 <- "Not at goal, no."

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

当我使用grepl("no", x1)时,它显示为TRUE,这是不正确的。这是在notUnknown中取消的。如何使用字符串解析功能明确检测单词no的字符串?任何建议都非常感谢。

2 个答案:

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