トップページに戻る
次の豆知識へ
前の豆知識へ
論理和と論理積の優先順位
先読み戻り読みを連続して置くのを、論理積
選択を論理和
と考えると、
プログラム言語で、orよりもandのほうが優先順位が高いのと同様に、
正規表現でも論理和よりも論理積のほうが優先順位が高いので、
優先順位には気をつける必要があり、時には括弧が必要になります。
たとえば、
---検索対象データ-----------------
abcdee
abc
ab
bc
cdeee
----------------------------------
---検索条件-----------------------
文字列abか文字列bcか文字列cdを含み
かつ
文字列eeを
含む行を検索する。
----------------------------------
正規表現は下記となります。
^((?=.*ab)|(?=.*bc)|(?=.*cd))(?=.*ee).*$
検索結果
下記の正規表現だと、論理和よりも論理積のほうが優先順位が高いため
検索結果が違ってくることに注意です。
^((?=.*ab)|(?=.*bc)|(?=.*cd)(?=.*ee)).*$
検索結果
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
ちなみに
^((?=.*ab)|(?=.*bc)|(?=.*cd))(?=.*ee).*$
は下記に変形できます。
^(?=.*(ab|bc|cd))(?=.*ee).*$