正则表达式忽略2个单词之间的所有内容

时间:2009-10-08 23:13:42

标签: regex

我有一些字符串可以检查Regex模式。这是正则表达式:

apple(?!( ?not)).*?inc(\.|luded)?

字符串1:“香蕉,不包括烂苹果” - 不给我一个匹配,这就是我想要的。

字符串2:“香蕉,包括腐烂的苹果” - 产生一个我想要的匹配

但如果我有一个像......这样的字符串。

“香蕉,腐烂的苹果,不包括成熟的鳄梨”或 “不包括香蕉,腐烂的苹果和杏子”都会产生一种我不想要的比赛。

所以基本上,我想看看“apple”和“included”(或“inc”或“inc。”)是否在字符串中并且“not”之前没有“not”并忽略其中的所有其他内容。

谢谢!

2 个答案:

答案 0 :(得分:2)

怎么样:

apple.*(?<!\snot)\s+inc(\.|luded)

答案 1 :(得分:1)

你正在使用负向前瞻断言来验证“不是”在“苹果”之后不会出现。但是,如果我理解正确,你想要的是检查“inc”不会立即之前由“not”。您可以使用负面的lookbehind断言,如下所示:

apple.*(?<!(\bnot ))inc(\.|luded)?