【问题标题】:Using regex in R to find strings as whole words (but not strings as part of words)在 R 中使用正则表达式来查找字符串作为整个单词(但不是字符串作为单词的一部分)
【发布时间】:2011-11-05 21:04:45
【问题描述】:

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

t1 = c("IGF2, IGF2AS, INS, TH", "TH", "THZH", "ZGTH")
grep("TH",t1, value=T)

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

【问题讨论】:

  • 尽管已经有两个答案,但您应该在标题中指定“单词”的含义。 TH2TH_TH 呢?
  • @NickSabbe 是一个很好的观点,也是我一直在努力解决的问题。对于遇到的未来读者,stackoverflow.com/a/40802619/7941188 展示了如何使用其他边界来做到这一点

标签: r regex


【解决方案1】:

您需要在搜索字符串周围添加word boundary anchors (\b),以便仅匹配整个单词(即由非单词字符或字符串开头/结尾包围的单词,其中“单词字符”表示@987654323 @,即字母数字字符)。

试试

grep("\\bTH\\b",t3, value=T)

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • @Tim Pietzcker 更快 :) 我想知道这两个正则表达式是否不同?
    • 你的更明确,尽管在这种情况下,它们在功能上是相同的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-04
    • 2021-10-02
    相关资源
    最近更新 更多