R regex:匹配带有两个彼此靠近的单词的字符串,但有例外

时间:2018-12-02 17:10:13

标签: r regex grepl

我做什么

我编写了一个正则表达式,使用本教程将"A""BV"的所有文本字符串与0-10个单词匹配:https://www.regular-expressions.info/near.html

df<- data.frame(text=c("ART 6 dasd asd NOT art 2 BV","NOT ART 6 ds as dd BV","ART 6 NO BV"),
                id=c(1,2,3))



subset(df, grepl("(ART)(?:\\W+\\w+){0,10}?\\W+(\\bBV\\b)",
                   perl=TRUE,
                   ignore.case = TRUE,
                   text))


                         text id
1 ART 6 dasd asd NOT art 2 BV  1
2       NOT ART 6 ds as dd BV  2
3                 ART 6 NO BV  3

我想要得到的东西

现在,我想重写一个不匹配的正则表达式,如果在“”之间的0-10个单词中出现列表中的任何单词(即示例数据中的NOTNO) A”和“ BV”。

所以结果看起来像:

subset(df, grepl("NEWREGEX",
                   perl=TRUE,
                   ignore.case = TRUE,
                   text))


                         text id
1        NOT ART 6 ds as dd BV  2

我认为我可以使用类似?!之类的东西,但我无法弄清楚

1 个答案:

答案 0 :(得分:0)

感谢 akrun ,我们有一个非常好的解决方案:

DeviceNumber