2014/01/27 未だにこの記事が検索されるようなので、誤りパターンを目立たないようにしました。 特定の文字列を含まない文字列にマッチする正規表現を考えてみた。 例えば、「xyz」を含まない文字列にマッチする正規表現。 否定先読みで処理すべき(否定先読みが使えない処理系はもうないでしょう) ^((?!xyz).)*$ 行単位でない場合は、前後を適宜修正する必要がある。 否定先読みを使えない場合を考慮すると、 ^(.*xyz.*|(.*))$ で、「$2」を使う。 この方向がシンプルでしょう。 ただ、マッチ数が増えるし、全てマッチしてしまうので、判定が素直じゃない。 それを嫌うなら、たまたま目にした教えてgooの方法ですね。 解説他 たまたま目にした教えてgoo http://oshiete.goo.ne.jp/qa/4522181.html なんか難しいのが書いてあったので、考えてみた