トップページに戻る
次の正規表現パズルへ
前の正規表現パズルへ
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
ドモルガンの法則