2014-02-27 27 views
1

我想創建一個正則表達式,只返回一個字如果它包含一個字符串並排除另一個字符串。例如,如果我在查找單詞「want」而不是「dontwant」,它會找到word_want_other單詞,但找不到單詞word_want_other_dontwant創建正則表達式來查找整個單詞只有包含一個字符串並排除其他

目前,我試圖讓它與負向預測(見下文)一起工作,但是這會一直尋找帶有「默認」的單詞。

.*want.*(?!dontwant).* 

Regular expression visualization

Debuggex Demo

+0

你想排除整個行,如果它有'dontwant'? – hwnd

+0

正確。排除包含「dontwant」的任何行。 – AberrantWolf

+1

如果是這種情況,請使用'^(?:(?! dontwant)。)* $'或者如果您仍想確保該行包含「want」而不是「dontwant」,則可以使用以下內容:' ^(?=。*想要)(?:(?!dontwant)。)* $''' – hwnd

回答

1

這工作:

(?=.*want)(?!.*dontwant).*

它查找任何字符串,該行的開頭包含want且不含dontwant後,如果滿足所有這些,它將返回整個行。

我不完全確定爲什麼最初的想法不起作用,因爲有一些工作,我試圖回去找到中間的東西。對不起,沒有更好的解釋之前發生了什麼問題。

相關問題