トップページに戻る    次の正規表現パズルへ    前の正規表現パズルへ

4-24 少なくとも2つを含む行を検索

正規表現パズル

文字列abc、文字列bcd、文字列cde
の3つの文字列の中の
少なくとも2つを含む行を検索する。

検索前


検索後


対象データ

abcXXXbcdXXXcdeXX
abcde
abcX
Xbcd
XXXX
abde
XabcdX
abcXcde
bcde


正規表現

^((?=.*abc)(?=.*bcd)|(?=.*abc)(?=.*cde)|(?=.*bcd)(?=.*cde)).*$

別解

^((?=.*abc)(?=.*(bcd|cde))|(?=.*bcd)(?=.*cde)).*$


解説

3つの文字列から2つの文字列を選ぶ組み合わせ数は、 3C2 通り
すなわち3通りの組み合わせを列挙してます。

別解では、
以下のブール代数の変形に基づいて、
正規表現を変形してます。

A*B + A*C + B*C =
A*(B+C) + B*C