regex - 正则表达式不包括 R 中的单词

标签 regex r

我真的不知道如何在 R 中使用不匹配的正则表达式正确查找单词

例如:数据包括:

x =  c("hail", "small hail", "wind hail",  "deep hail",  "thunderstorm hail", "tstm wind hail", "gusty wind hail", "late season hail", "non severe hail", "marine hail")

我想找到所有有“冰雹”但没有“海洋”的观察者

我的尝试:
x[grep("[^(marine)] hail", x)]

-> 我只有 5 个:
"small hail"      "wind hail"       "deep hail"       "tstm wind hail"  "gusty wind hail"

不知道其他4个怎么样

最佳答案

使用环视断言。

> x =  c("hail", "small hail", "wind hail",  "deep hail",  "thunderstorm hail", "tstm wind hail", "gusty wind hail", "late season hail", "non severe hail", "marine hail")
> x[grep("^(?=.*hail)(?!.*marine)", x, perl=TRUE)]
[1] "hail"              "small hail"        "wind hail"        
[4] "deep hail"         "thunderstorm hail" "tstm wind hail"   
[7] "gusty wind hail"   "late season hail"  "non severe hail" 

或者

添加 \b必要时边界。 \b单词字符和非单词字符之间的匹配。
> x[grep("^(?=.*\\bhail\\b)(?!.*\\bmarine\\b)", x, perl=TRUE)]
  • ^断言我们处于开始阶段。
  • (?=.*hail)正前瞻断言匹配必须包含字符串 hail
  • (?!.*marine)否定前瞻断言匹配将不包含字符串 marine .
  • 因此,仅当两个条件都满足时,上面的正则表达式才会匹配起始 anchor 或行的开头。
  • 关于regex - 正则表达式不包括 R 中的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27986361/

    相关文章:

    JavaScript 字符串替换为棘手的正则表达式

    regex - OWASP Zap 在代理中排除除给定 URL 之外的所有内容

    regex - 关于 Vim 中正则表达式的问题

    r - 在 PostgreSQL 中使用 r sf::st_write 到非公共(public)模式

    r - data.table 连接使用一个表中的两列和另一表中的一列

    r - 如何根据行名删除r中的一行

    php - Perl 正则表达式模式在 php 中有效,但在 javascript 中无效?

    c# - 在 ASP.NET RegularExpressionValidator 中忽略区分大小写

    python - 如何使用 rpy2 在 python 中运行 R 脚本

    r - CRAN Solaris : caught segfault *** address cause 'invalid permissions'