2013-03-09 24 views
1

如何排除精確的短語?排除正則表達式中的確切短語

例如我想不匹配這個正則表達式代碼內:

a sentence with hello phrase 

,但在第一次我用這個匹配該

a sentence with oehll phrase 

^([^hello]*)$ 

但唯一的問題是排除字母「h」,「e」,「l」和「o」(不是te rm「你好」)!

我讀過很多關於這方面的文章,並以任何我能想到的方式使用\ b,(?!...)和(...),但是我做不到!

+3

可能重複的[如何否定正則表達式中的特定詞?](http://stackoverflow.com/questions/1240275/how-to-negate-specific-word-in-regex) – 2013-03-09 23:22:32

+0

是的,但他們不工作!也許前瞻性和/或後面看不見!我能做什麼? – 2013-03-10 00:24:46

+2

@RuAlv,你可以先說明正在使用的正則表達式風格/語言/工具。爲什麼你不能否定匹配'hello'的結果呢?這是最好的方法。 – Qtax 2013-03-10 00:35:40

回答

0

嘗試使用以下正則表達式:

^.*((\W|^)hello(\W|$)){0}.*$ 

這僅僅是一個黑客,這個表達式也不幸排除句子「你好」嵌入其他的話。 (例如,「一句招呼短語」)

另一種方法:使用以下命令來檢測你想要的詞組句子:

^.*((\W|^)hello(\W|$)).*$ 

然後就是刪除包含該詞的句子。

聲明: 此外,這個表達式的編寫假設你正在處理文本文件中的原始行而不是英文句子。如果你想使用真正的句子,我建議你首先將你的文本標記爲單獨的句子,然後用類似的正則表達式測試每個句子。