与正则表达式反转匹配

时间:2009-06-05 18:30:52

标签: regex pcre

使用PCRE,如何构建一个仅在字符串 not 时才匹配的表达式。

如果我使用grep(我不是),我会想要-v选项。

一个更具体的例子:我希望我的正则表达式匹配字符串中的iff字符串foo 而不是。因此,它会匹配bar,但不会匹配foobar

6 个答案:

答案 0 :(得分:50)

好的,我根据您提出的解决方案(错误地匹配以'test'开头的字符串)改进了我的正则表达式。

^((?!foo).)*$

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

答案 1 :(得分:4)

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

^(.(?!test))*$

关键是你需要对字符串

中的每个字符做出否定断言

答案 2 :(得分:2)

我已经为某人回答了这个问题,请看这些链接:

答案 3 :(得分:1)

这确实几乎是重复的。我想你正在寻找的正则表达式是

(?富)。*

答案 4 :(得分:-1)

构建匹配的表达式,并使用!match()...(逻辑否定) 无论如何,这可能就是grep的作用......

答案 5 :(得分:-1)

您也可以使用re.split执行此操作(在python中),并根据正则表达式进行拆分,从而返回与正则表达式不匹配的所有部分splitting based on what doesn't match a regularexpression