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

在R中使用grep查找字符串作为整个单词(而不是字符串作为单词的一部分),r,regex,R,Regex,我正在寻找正确的正则表达式。以下 t1 = c("IGF2, IGF2AS, INS, TH", "TH", "THZH", "ZGTH") grep("TH",t1, value=T) 返回t1的所有元素,但只有第一个和第二个元素是正确的。我只希望返回带有单词/短语TH的条目?您需要在搜索字符串周围添加(\b),以便只匹配整个单词(即,被非单词字符包围的单词或字符串的开始/结束,其中“单词字符”表示\w,即字母数字字符) 试一试 您可以在regexp中使用\来匹配单词的开头/结尾 grep(

我正在寻找正确的正则表达式。以下

t1 = c("IGF2, IGF2AS, INS, TH", "TH", "THZH", "ZGTH")
grep("TH",t1, value=T)
返回
t1
的所有元素,但只有第一个和第二个元素是正确的。我只希望返回带有单词/短语
TH
的条目?

您需要在搜索字符串周围添加(
\b
),以便只匹配整个单词(即,被非单词字符包围的单词或字符串的开始/结束,其中“单词字符”表示
\w
,即字母数字字符)

试一试

您可以在regexp中使用
\
来匹配单词的开头/结尾


grep(“\\”,t1)
等。

@Tim Pietzcker更快:)我想知道,这两个regexp是否不同?您的regexp更明确,尽管在本例中,它们在功能上是相同的。尽管已经有两个答案,但您应该在标题中指定“单词”的含义。那么
TH2
thu
呢?@nicksabe这是一个很好的观点,也是我一直在努力解决的问题。对于将来遇到的读者,演示如何使用其他边界
grep("\\bTH\\b",t3, value=T)