首页 > 解决方案 > 用于忽略某些单词的正则表达式

问题描述

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

输入: Online Mobile Order is not working

输出: Online Mobile Order

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

在我目前的情况下,我使用它如下:(在线移动订购|移动在线订购|在线订购移动)

这允许标记这些组合,而不管它们的顺序如何。

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

我在这里寻找类似的答案,但由于我不使用正则表达式,我不确定是否有任何答案与我的问题相匹配。

标签: regexregex-lookaroundsregex-negationregex-group

解决方案


如果您的引擎支持条件,则此方法有效。
总的来说,它的 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}

推荐阅读