关于正则表达式:与正则表达式反转匹配

Invert match with regexp

本问题已经有最佳答案,请猛点这里访问。

对于PCRE,如何构造仅在未找到字符串时匹配的表达式。

如果我使用grep(不是grep),我希望使用-v选项。

一个更具体的例子:我希望我的regexp匹配iff字符串foo不在字符串中。因此,它将与bar匹配,但与foobar不匹配。


好的,我已经根据您提出的解决方案(它错误地匹配以"test"开头的字符串)优化了正则表达式。

1
^((?!foo).)*$

此正则表达式将只匹配不包含foo的字符串。第一个lookahead将拒绝以"foo"开头的字符串,第二个lookahead将确保在字符串的其他位置找不到foo。


根据丹尼尔的回答,我认为我找到了一些有用的东西:

1
^(.(?!test))*$

关键是您需要对字符串中的每个字符进行否定断言。


我已经为某人回答了这个问题,请参阅以下链接:

  • 正则表达式相反
  • 在Ruby中查找正则表达式的相反项

它几乎是一个复制品。我想你要找的是雷吉士

?*!


您也可以(在python中)使用re.split,并根据正则表达式进行拆分,从而返回与regex不匹配的所有部分,根据与正则表达式不匹配的部分进行拆分。


构建匹配的表达式,然后使用!匹配(…)(逻辑否定)这可能就是grep的做法…