2012-07-10 52 views

回答

9

這裏是要做到這一點相當簡單的方法:

^(?!.*\bbar\b).*\bfoo\b.* 

說明:

^    # starting at beginning of the string 
(?!    # fail if (negative lookahead) 
    .*\bbar\b  # the word 'bar' exists anywhere in the string 
)    # end negative lookahead 
.*\bfoo\b.*  # match the line with the word 'foo' anywhere in the string 

Rubular:http://www.rubular.com/r/pLeqGQUXbj

\b在正則表達式是一個word boundary

Vim的版本:

^\(.*\<bar\>\)\@!.*\<foo\>.* 
+1

+1 - 這是一個比我更好的解決方案。 – 2012-07-10 19:51:19

+0

任何人都想成爲我的英雄,並以'vim'接受的形式呈現這個正則表達式? – 2012-07-10 19:57:17

+1

@CoryKlein - 用Vim版本編輯我的答案。 – 2012-07-10 20:01:42

0

是。使用lookarounds。

/^.*(?<!\bbar\b.*)\bfoo\b(?!.*\bar\b).*$/ 
相關問題