縦線は、パターンに選択肢 (alternative) を列挙するために使われます。
例えば、パターン gilbert|sullivan
は、"gilbert" または "sullivan" にマッチします。
選択肢の数に制限はありません。また、空の選択肢も可能です
(空の文字列にマッチします)。マッチの手順としては、
各選択肢が左から右に順にマッチするかどうか試行され、
最初にマッチに成功した選択肢が使われます。選択肢を(後述する)
サブパターン内に記述した場合、マッチの「成功」とは、
サブパターン内の選択肢も、メインのパターンの他の部分もマッチした
ということを意味します。
どの選択肢がマッチしたかを、
(*MARK:NAME)
や (*:NAME)
の形式で記録することができます。
(*MARK)
のような動詞の形式は、
いくつでも記述でき、名前はユニークである必要がありません。
マッチが成功すると、最後に現れた
(*MARK:NAME)
の名前が
あたかも MARK
と呼ばれるキャプチャグループが存在するかのように、
マッチした情報の一部として置かれます。
よって、この情報は preg_match() の
matches
から読み取ることができ、
preg_replace_callback() の
callback
に渡すことなどができます。