在 R 中使用正则表达式来查找字符串作为整个单词(但不是字符串作为单词的一部分)
Posted
技术标签:
【中文标题】在 R 中使用正则表达式来查找字符串作为整个单词(但不是字符串作为单词的一部分)【英文标题】:Using regex in R to find strings as whole words (but not strings as part of words) 【发布时间】:2022-01-18 12:33:25 【问题描述】:我正在寻找正确的正则表达式。以下
t1 = c("IGF2, IGF2AS, INS, TH", "TH", "THZH", "ZGTH")
grep("TH",t1, value=T)
返回t1
的所有元素,但只有第一个和第二个是正确的。我只想返回带有单词/短语TH
的条目?
【问题讨论】:
尽管已经有两个答案,但您应该在标题中指定“单词”的含义。TH2
或 TH_TH
呢?
@NickSabbe 是一个很好的观点,也是我一直在努力解决的问题。对于遇到的未来读者,***.com/a/40802619/7941188 展示了如何使用其他边界来做到这一点
【参考方案1】:
您需要在搜索字符串周围添加word boundary anchors (\b
),以便仅匹配整个单词(即由非单词字符或字符串开头/结尾包围的单词,其中“单词字符”表示@987654323 @,即字母数字字符)。
试试
grep("\\bTH\\b",t3, value=T)
【讨论】:
【参考方案2】:您可以在正则表达式中使用\<
和\>
来匹配单词的开头/结尾。
grep ("\\<TH\\>", t1)
等
【讨论】:
@Tim Pietzcker 更快 :) 我想知道这两个正则表达式是否不同? 你的更明确,尽管在这种情况下,它们在功能上是相同的。以上是关于在 R 中使用正则表达式来查找字符串作为整个单词(但不是字符串作为单词的一部分)的主要内容,如果未能解决你的问题,请参考以下文章