在 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 的条目?

【问题讨论】:

尽管已经有两个答案,但您应该在标题中指定“单词”的含义。 TH2TH_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 中使用正则表达式来查找字符串作为整个单词(但不是字符串作为单词的一部分)的主要内容,如果未能解决你的问题,请参考以下文章

如何在 python 中使用变量作为正则表达式? [复制]

正则表达式将文本查找为整个单词

正则表达式用特定格式 C# 替换整个单词

每次下一个字符与字母/数字或下划线不同时,使用正则表达式查找一个单词

正则表达式整个单词[重复]

正则表达式在字符串中任何特定单词之前和之后查找特定单词