2014-01-15 34 views
2

我试图在.NET中构建一个正则表达式,它将匹配来自列表中的单词(使用变更),该单词来自另一个列表中的单词,后面跟着空格。Regex lookbehind with alterations and whitespace

例如,假设我在寻找AAA或BBB,我想他们不来了WWW或XXX,这样下应符合:

DDD AAA 
AAA 

但下面不应该:

WWW AAA 
XXX  BBB 

我试着用以下模式:

(?<!WWW|XXX)(AAA|BBB) 

但我不知道如何定义塔第一份清单后不应有空格。

任何想法?

回答

2

幸运的是,.NET的正则表达式允许后向断言无限期里面repetion,所以它的简单扩展这个正则表达式:

(?<!(?:WWW|XXX)\s*)(AAA|BBB) 

说明:

(?<!   # Assert it's impossible to match this before the current position: 
(?:WWW|XXX) # WWW or XXX 
\s*   # followed by any number of whitespace characters 
)   # End of lookbehind 
(AAA|BBB) # Match AAA or BBB, capture the result in group 1 
+0

哇,最快的答案永远...但是,它似乎并没有工作,至少不是RegExr。它不匹配任何东西。难道这种模式存在一些问题吗? – ml123

+0

适用于RegexHero – Jonesopolis

+0

@ml123:这个正则表达式只适用于.NET引擎。 RegExr使用PCRE引擎(我认为),该引擎不支持我上面提到的功能。 –