2014-01-15 31 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引擎(我認爲),該引擎不支持我上面提到的功能。 –