正则表达式否定非连续模式

时间:2015-01-27 08:19:29

标签: regex regex-lookarounds negation

我希望匹配羊毛这个词,其中跟随(立即或更远)单词 snow

输入数据:

Mary had a little lamb, its fleece was white as snow balls

以下正则表达式不起作用,因为它们都匹配,不应该。我相信我过去已经实现了这个目标但却无法找到。

/(fleece).*(?!snow)/
/(fleece)[\w ]+(?!snow)/

有关信息,这个正则表达式将成为更大的正则表达式的一部分,并且将成为一个替换部分,所以我不能简单地否定整个正则表达式 - 例如。

/something(?!somethingelse)|fleece.*(?!snow)/

1 个答案:

答案 0 :(得分:3)

你快到了。将.*置于否定前瞻内。以下正则表达式只会在fleece后面跟.*?任意字符串零次或多次以及字符串snow时捕获字符串(fleece)(?!.*?snow)

\b

OR

如有必要,请使用字边界\b(fleece)\b(?!.*?\bsnow\b)

{{1}}

DEMO