一般的な正規表現では「ある特定の文字列を含まない文字列にマッチする正規表現」というのが難しく。 正規表現メモ ある文字列を含まない正規表現のようなのを使うと、その正規表現が作れます。 hoge に不一致の文字列は以下のような、びっくりするほど複雑な正規表現になってしまいます。
(((((([^h]*)*(h+[^o][^h]*)*)*)*(h+[^g][^h]*)*)*)*(h+[^e][^h]*)*)*
一方、秀丸エディタの正規表現( HMJRE.DLL )は、不一致の文字列のための演算子が用意されています。 正規表現 hoge にマッチしない文字列は次のようにかけます。
(?!hoge).*
「後ろに hoge が続かない文字」の連続を意味します。すごくスマート。
他の正規表現(たとえば Perl とか)にも同じような機能として否定先読みっていうのがあったんですね。ううむ、まだまだ正規表現に関して勉強が足りてないなぁ。