使用R中的grep查找字符串作为整个单词(但不是字符串作为单词的一部分)

Han*_*ans 28 regex grep r

我正在寻找合适的正则表达式.下列

t1 = c("IGF2, IGF2AS, INS, TH", "TH", "THZH", "ZGTH")
grep("TH",t1, value=T)
Run Code Online (Sandbox Code Playgroud)

返回所有元素t1,但只有第一个和第二个是正确的.我只想要带有单词/短语的条目TH返回?

Tim*_*ker 37

您需要在搜索字符串周围添加单词边界锚点(\b),以便只匹配整个单词(即由非单词字符或字符串的开头/结尾包围的单词,其中"单词字符"表示\w,即字母数字字符).

尝试

grep("\\bTH\\b",t3, value=T)
Run Code Online (Sandbox Code Playgroud)


Ana*_*liy 17

您可以使用\<\>在正则表达式中匹配单词的开头/结尾.

grep ("\\<TH\\>", t1) 等等

  • 你的更明确,尽管在这种情况下,它们在功能上是相同的。 (2认同)