■ ある文字列を含まないものにマッチする正規表現 どう書けばいいのか分からなかったので、検索してみた。 Perl正規表現雑技 ある文字列を含まないものにマッチする正規表現 (?:(?!foo).)* ?: の部分は、キャプチャしないことを高速化のために指定しているだけなので、 本質的な部分だけ取り出すと以下のようになる。 ((?!foo).)* なるほど。 「foo を前に持たない文字」だけで構成されている、という正規表現なわけか。 ついでに、もう少し具体的な例を。 今回やりたかったのは、 (大文字小文字は区別せず)foo や bar を含む文字列は除外したい、というもの。 そのための正規表現は、次のようになる。 '/^(?:(?!(?:foo|bar)).)*$/i' ただし、PHP の場合は、 Holes in most preg_match() filters - PHP Secur