如何使用grep()/ GSUB()来查找精确匹配如何使用grep()/ GSUB()来查找精确匹配

2019-05-10 09:40发布

string = c("apple", "apples", "applez")
grep("apple", string)

这会给我该指数在所有三个元素string 。 但我想对“苹果”这个词(即我只是想精确匹配grep()返回指数1)。

Answer 1:

使用单词边界\b这一个字和非单词字符之间的匹配,

string = c("apple", "apples", "applez")
grep("\\bapple\\b", string)
[1] 1

要么

使用锚。 ^断言我们是在开始。 $断言,我们是在最后。

grep("^apple$", string)
[1] 1

你可以存储在变量中的正则表达式,然后使用它像下面。

pat <- "\\bapple\\b"
grep(pat, string)
[1] 1
pat <- "^apple$"
grep(pat, string)
[1] 1

更新:

paste("^",pat,"$", sep="")
[1] "^apple$"
string
[1] "apple"   "apple:s" "applez" 
pat
[1] "apple"
grep(paste("^",pat,"$", sep=""), string)
[1] 1


Answer 2:

对于精确匹配,这使得使用最感== 。 此外,这将是比快grep()并且显然容易得多。

which(string == "apple")
# [1] 1


文章来源: How to use grep()/gsub() to find exact match