これまで、正規表現で否定マッチはできないものと思いこんでいました。 が、しかし。 実はできました。否定先読みを使えばよいのです。 否定先読みとは、『マッチに成功したらマッチ失敗とせよ』という正規表現です。 はい、意味がわかりませんね。それが普通の感覚です。 さて、早速実例を。 次の正規表現は『??geにマッチするけどhogeは除外する』という意味になります。 (?!hoge)..geこの正規表現が何を表しているかというと、 文字列を先頭から見て、 "hoge" が続くのならばマッチ失敗とせよ。 重要!! → 先読みだからマッチ位置は移動しない。次のマッチも先頭から開始される。 さもなければ、文字列を先頭から見て "..ge" にマッチするか検証せよ。 という意味です。 うーむ、いささかトリッキーではあるものの、これは実践でも使えそうですね。 ちなみに、否定戻り読みを使うやり方もあります .
![正規表現で否定マッチ - R42日記](https://cdn-ak-scissors.b.st-hatena.com/image/square/665d364a7006353ca778bc6830d05dfebdac85db/height=288;version=1;width=512/http%3A%2F%2Fecx.images-amazon.com%2Fimages%2FI%2F51cRxtwo7IL.jpg)