2013-05-29 55 views
3

什麼正則表達式可以匹配字符串「war」在其前面沒有字符串「soft」的情況?換句話說,「第三次世界大戰」中的「戰爭」會匹配,但「我的軟件在哪裏」的「戰爭」不會?此外,「離開我的倉庫」會匹配,所以會「知道」。換句話說,我只是不希望字符串「軟件」匹配。匹配「war」但不匹配「software」

+0

您正在尋找消極的向前看。 – SLaks

+0

http://www.regular-expressions.info/lookaround.html – Kevin

+1

您需要告訴我們您期望的答案是哪種正則表達式引擎。 – Theo

回答

5

如果您的正則表達式引擎支持向後看:(?<!soft)war

你可以使用Perl試試吧:

$ perl -ne 'print if /(?<!soft)war/i' < my-text-file 

,將工作或多或少像grep(但grep不支持lookbehinds,據我所知)。

+1

@JohnFitzpatrick這是你正在尋找的答案。 – melwil

+0

這有效。如果我要求輸入不區分大小寫的版本,我會太需要嗎? –

+0

當然,我已經更新了示例(這只是我在最後一個斜槓後)。 – Theo

1

試試這個:'[^ soft]。* war',它的接近但並不完美,放入你的字符串組合中,你會明白爲什麼,如果它唯一沒有識別的'戰爭'它需要在單詞前面加上至少一個字母,但它不能在「soft」前面使用你可以在你的程序中使用條件,並將這個邏輯與單詞war的正則表達式相結合,這個單詞不是任何subsstring的一部分,正如melwil指出的那樣?

相關問題