使用RegEx查找不在另一个单词之后的单词

时间:2013-12-29 16:44:13

标签: regex negative-lookbehind

我应该使用什么RegEx模式来匹配不在另一个特定单词之后的特定单词?

例如:

我正在寻找“xyz”之后没有的“abc”,所以以下内容将匹配:

xxabc

p abc

以下不会:

xyz abc

谢谢!

2 个答案:

答案 0 :(得分:5)

最简单的方法是消极的后视断言:

(?<!xyz)(?<!xyz )abc

但是,您在字母组之间的间距变化表明您可能会发现abcxyz之间的距离存在一些差异。如果你只想找到abc,如果字符串中前面的xyz 从不,那么你可能还需要更多内容:

^(?!xyz)*((?!xyz).)*abc

后一个正则表达式使用an equivalent of inverse matching而不是负面的lookbehind断言。

答案 1 :(得分:0)

你需要这样的东西:

(?<!xyz )abc

Regular expression visualization

Debuggex Demo

但语法会有所不同,具体取决于您使用的语言。例如,此语法在JavaScript中不起作用。