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

2-9 指定した拡張子以外のファイルを取得

正規表現パズル

検索を使って、拡張子がjpg,gif,bmp以外のファイルを取得する。
パスの区切り文字は、/のみとする

検索前


検索後


対象データ

C:/oraclesqlpuzzle/regex/aaa.jpg
C:/oraclesqlpuzzle/regex/aaa.bmp
C:/oraclesqlpuzzle/regex/aaa.gif
C:/oraclesqlpuzzle/regex/aaa.txt
C:/oraclesqlpuzzle/regex/aaa.zip
C:/oraclesqlpuzzle/regex/aaa.cab
C:/oraclesqlpuzzle/aaa.cab


正規表現

^.*\.(?!jpg|gif|bmp).*$

別解

^.*\.(?!jpg)(?!gif)(?!bmp).*$


解説

否定先読みと選択を組み合わせてます。

拡張子がjpgでない、かつ
拡張子がgifでない、かつ
拡張子がbmpでない

は、ドモルガンの法則を使って

拡張子が、jpgまたはgifまたはbmp
のいずれでもない
といった同値変形も行われてます。

ブール代数で表すと
Not(A) * Not(B) * Not(C) = Not(A+B+C)
です。

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

別解では、下記のドモルガンの法則を使って正規表現を変形してます。(戻してます)
_____   _ _ _
A+B+C = A*B*C

ドモルガンの法則