【问题标题】:grep entire(not exact) match in R [duplicate]R中的grep整个(不完全)匹配[重复]
【发布时间】:2015-04-10 03:54:00
【问题描述】:

我想匹配整个单词。如果您在下面看到,我希望“is”的 grep 在输出中仅显示 4,因为只有“this is a line”包含整个单词“is”

我还尝试使用 ^ 和 $ 进行搜索,如下所示,但我正在寻找与“is”完全匹配的字符串。它也可以包含其他单词,只要单词“is”作为单独的单词出现

> lines = c("this","this","this","this is a line")
> grep("is",lines)
[1] 1 2 3 4
> grep("^is$",lines)
integer(0)

【问题讨论】:

    标签: regex r


    【解决方案1】:

    你想在你的图案周围放置word boundaries

    grep('\\bis\\b', lines)
    

    注意:^ 锚断言正则表达式引擎在字符串中的当前位置是字符串的开头,$ 断言位置在字符串的末尾。因此,通过实现这两个锚点,您就是在告诉引擎整个字符串应该匹配。

    【讨论】:

    • 谢谢。但是如果我的搜索键是一个变量,比如 mykey = "is",那么我该如何使用它呢?
    • 使用 paste 连接每个对我有用的单独组件,例如 grep(paste0("\\b",mykey,"\\b"), lines) 感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-03
    • 1970-01-01
    • 2014-06-23
    • 2021-08-02
    • 1970-01-01
    • 2021-11-14
    • 1970-01-01
    相关资源
    最近更新 更多