否定の先読み
http://itlabo.seesaa.net/article/72572251.html
以下引用
正規表現で『ある一文字以外の文字』を表現するのは簡単です。文字クラス[]の先頭に^(キャレット)をつければいい。 $fuga =~ /[^a]/ #$fugaが「a」以外の文字 で構成されていればTRUE でも、これで指定できるのは1バイト文字だけです。 どうやら、コードをUTF8で統一しても、正規表現の文字クラス中ではバイト単位の動作をしてるようで、2バイト以上の文字を文字クラスに入れるとうまく動作してくれないのです。 #間違った例 $fuga =~ /[^あ]/ #「あ」は認識されず、$fugaに(\xE3,\x81,\x82)の いずれかのバイト列が含まれているとFALSEになる(「あ」はUTF8でE38182)
解決策
(?:(?!foo).)*