トップページに戻る    次の豆知識へ    前の豆知識へ

論理和と論理積の優先順位

先読み戻り読みを連続して置くのを、論理積
選択を論理和
と考えると、

プログラム言語で、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).*$