2013-09-16 61 views
1

顯示我有這Regex (Live)正則表達式匹配,如果詞不前,其他字

^((?!when|how|where).*?(ARE|WANNA|DO).*\?)$ 

而這三句話:

Hey are we out after the rain? 
Where are we meeting? 
Dan where are we gonna meet? 

我的正則表達式匹配1和3,但應該只匹配1

我的基本規則是,其中一個單詞when|how|where不能出現在單詞ARE|WANNA|DO之一之前。

任何想法?

回答

2

以下應該工作:

^((?!when|how|where).)*?(ARE|WANNA|DO).*\?$ 

把負先行內部重複組像((?!foo).)*使每個字符匹配之前要檢查的先行,所以這將匹配任意數量的任何字符,但停止,如果遇到了foo

示例:http://rubular.com/r/0cw8eaFMXB

1

嘗試使用這個:匹配前

^((?:(?!when|how|where).)*?(ARE|WANNA|DO).*\?)$ 
    ^^^     ^

該工作組將「檢查」每.,確保每個點不具有when|how|where領先。

相關問題