正则表达式忽略某些单词

时间:2019-06-05 00:20:19

标签: regex regex-lookarounds regex-negation regex-group

什么是忽略给定句子中单词的正则表达式?

输入: Online Mobile Order is not working

输出: Online Mobile Order

我正在尝试获得一些自动化工具来标记出现在线移动订单组合的情况。

在当前情况下,我将其使用如下: (在线移动订单|移动在线订单|在线移动订单)

这允许标记这些组合,而不考虑其顺序。

但是,有时我需要捕获“在线移动订单不起作用”,但是添加“不起作用”将不会为我标记这句话。

我在这里寻找类似的答案,但是由于我不在Regex上,所以我不确定是否有任何答案与我的问题相符。

2 个答案:

答案 0 :(得分:2)

如果您的引擎支持条件条件,则此方法有效。
总的来说,它的PCRE是Perl,Boost。

(?i:(?m:[ ]|^)(?:(?(1)(?!))(Order)|(?(2)(?!))(Mobile)|(?(3)(?!))(Online))){3}

https://regex101.com/r/w7zfyV/1

扩展

 (?i:
      (?m: [ ] | ^ )
      (?:
           (?(1)(?!))
           ( Order )                     # (1)
        |  (?(2)(?!))
           ( Mobile )                    # (2)
        |  (?(3)(?!))
           ( Online )                    # (3)
      )
 ){3}

答案 1 :(得分:0)

这应该有效:

/^.?(Online Mobile Order|Mobile Online Order|Online Order Mobile).?$/gi

.?匹配这些单词组合前后的任何零个或多个字符。您还应该使用i标志,使其与任何字符大小写匹配。

使用此online regex tester进行测试。