正则表达式不会停止匹配否定表达式

时间:2016-12-24 18:02:14

标签: regex

尝试构建一个匹配一个或其他字符串的正则表达式,除非第三个字符串匹配。

e.g。 1.如果字符串有“从不”,则不匹配 2.如果字符串包含'失望'或'不开心',则匹配。

我尝试过使用 ((失望)|(不高兴))((从来没有)$?!)。*

问题是 - 它没有抓住否定(上面的#1)。即它匹配下面的所有3,而它应该只匹配下面的2和3。

永远不会失望

非常失望

不高兴失望

1 个答案:

答案 0 :(得分:2)

您可以使用

^(?!.*never).*(disappointed|unhappy).*

请参阅regex demo

<强>详情:

  • ^ - 字符串开头
  • (?!.*never) - 除了换行符之外的任何0+字符之后都不会出现never子字符串(如果使用DOTALL修饰符,则为任何字符)
  • .* - 除了换行符之外的任何0 +字符
  • (disappointed|unhappy) - 两个文字字符序列之一
  • .* - 除了换行符之外的任何0 +字符