2016-04-01 10 views
0

パターンに一致するように正規表現を書く方法を理解しようとしていますが、それは私が興味がないより大きなパターンの一部ではない場合のみです。たとえば、私はそれが「foobaz」または「fooqux」ではなく「foobarに」大きいパターンの一部でない場合にのみパターンを一致させる正規表現

おかげと一致している必要があり

を「foobarに」以外の「foo」を含むものと一致します正規表現をたいと思います!

+2

これは何ではないかもしれません探しているのですが、私は2番目のパスで欲しくないものを削除します。 'grep foo | grep -v foobar'を実行します。 –

+0

'foo [^ b] [^ a] [^ r]のようなものを試してみることもできますが、うまくいきません。 –

答えて

3

あなたはfooなくfoobarから始まる単語を一致させるために、ここで否定先読みを使用することができます。

\bfoo(?!bar)\S* 

RegEx Demo

分裂:

\b  # word boundary 
foo  # match literal text foo 
(?!bar) # negative lookahead to fail the match if we have bar ahead 
\S*  # match 0 or more non-space characters 
+1

非常にクールです。ありがとう! – Jacob

+0

うまくいきました。[この回答の左上に**チェックマーク**をクリックして回答をマークすることができます](http://meta.stackexchange.com/a/5235/160242) – anubhava

関連する問題