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

5-22 正規表現で条件法

正規表現パズル

文字Xが存在するならば、
文字Yが存在する行を検索する。

検索前


検索後


対象データ

XXYY
YYXX
XX
YY
ABC


正規表現

^((?=.*X)(?=.*Y)|(?!.*X)).*$

別解

^((?!.*X)|(?=.*Y)).*$


解説

条件法
Pが真ならばQも真
は、
Pが偽またはQが真である
と同値です。

正規表現は、2値論理なので
is not true = false
なのです。

SQLは、3値論理なので
is not true は、 false もしくは unknown
ですが。

ちなみに、ブール代数の公式
    _     _
A*B+A = B+A

からも別解の正規表現に変形できます。