導入
「cat か dog か bird」のように、いくつかの候補のどれか にマッチさせたいときに使うのが選択(alternation)の |(縦棒/パイプ)です。文字クラス [ ] が「1文字の候補」だったのに対し、| は「文字列まるごとの候補」を表せます。
説明
| は「左右のどちらか」を意味します。
パターン: cat|dog|bird 対象: I have a dog → "dog" にマッチ
| の適用範囲は広いので、候補を区切る範囲は ( ) で明示するのが安全です。
パターン: ^(赤|青|黄)信号$ 対象: 青信号 → マッチ
パターン: ^赤|青|黄信号$ ← カッコなしだと「^赤」「青」「黄信号$」の3択と解釈され、意図がずれる
(赤|青|黄)信号 は「赤・青・黄のいずれか + 信号」を表します。カッコで候補をくくることで、共通部分(信号)と選択部分(赤|青|黄)をきれいに分けられます。
パターン: https?|ftp 対象: https / http / ftp → いずれもマッチ
(https? の ? は「s が0か1回」なので http と https の両方を1つで表せる、という前章の応用です。)
やってみよう
| は「または」。候補が文字列単位なら (A|B|C) のようにカッコでくくる ―― これで「どれか1つ」のパターンを安全に書けます。第2章の [ ](1文字の候補)との使い分けも意識しましょう。