abを含まない、かつ、bcを含まない、かつ、cdを含む行を検索する。 検索前 検索後
abcdefg acbdefg ab bc cd cdxxabxxbc abcd cdab axbxcdxxx
^(?!.*ab)(?!.*bc)(?=.*cd).*$ 別解 ^(?!(?=.*(ab|bc)))(?=.*cd).*$
肯定先読みと否定先読みを組み合わせて、 論理演算を行ってます 別解では、 abを含むことをA bcを含むことをB cdを含むことをC とおいて、 ドモルガンの法則を使って _ _ ___ A*B*C=(A+B)*C というブール代数の同値変形を行ってます。 双対の原理を使って _ _ A*B = 1 ⇔ A+B = 0 ⇔ ___ A+B = 1 と変形してもいいですけどね。 正規表現の問題集1 (基本編) ド・モルガンの法則 とは