正则表达式匹配没有特定单词的字符串(任何地方)

时间:2016-04-06 14:59:59

标签: regex regex-negation

我在SO上发现了很多关于此的问题, 但他们总是认为这个词在开头或结尾。

假设这个词是猫,我不想匹配其中任何一个:

  1. hellocat
  2. CATFOOD
  3. nocatthere
  4. 一个常见的想法似乎是这样的:

    ^([^c]*|c([^a]|$|a([^t]|$)))*
    

    正则表达式的工作原理如下:

    1. 匹配除c之外的任何内容 [^c]*

    2. 或者,如果您匹配了c,则只匹配a以外的内容,或单词([^a]|$的结尾

    3. 或者,如果您匹配了一个ca,那么只匹配t以外的内容,或单词([^t]|$)的结尾

    4. 示例工作正常,但它们不匹配。

      但是正则表达式可能会混淆:

      以下示例匹配:

      1. CCAT
      2. cacat

0 个答案:

没有答案