正規表現と言えば、特定の文字列と一致するものを抽出するものと考えている人が多いだろう。 また、特定の文字列を一致する=特定の文字列を含むという考えの人も多いと思う。 実は、正規表現は、特定の文字列を含まない文字列を抽出することが出来る。 ^(?!.*abc).*$ ?!は、特定の文字列を含まないことを表す正規表現だ。 .*で任意の文字列を表しているため、上記の正規表現は、任意の文字列のあとにabcを含まない文字列となる。 ・一致 ab abz xyz ・不一致 abc abcabc abcz 1abc 他の正規表現と組み合わせてaで始まり、xyzを含まず9で終わるなども表現できる。 ^a(?!.*xyz).*9$