0

現在、2つのpreg_match_all()を実行しているので、それらを1つにマージしたいと思います。それぞれがfunctionAまたはfunctionBのいずれかのオカレンスを検出します。「this|that」を使用してthisまたはthatに一致させることは知っていますが、「%this()」または「%that()」に一致させる場合、「%this()|」に一致させるのが最適かどうかはわかりません。 %that() "または、「|」の両側に含まれるものをバインドする方法がある場合 「%this | that()」のような短いものを書くこと。これは「%this」と「that()」には一致すると思いますが、「this()」と「that()」のどちらにも一致しないと思います。私は自分の特定の問題を解決する他の方法を知っていますが、私(そしてうまくいけばこれを見つけた他の人)は「|」を適切に使用する方法を知りたいと思っています 文字列全体を繰り返す必要はありません。ここ'

$regex = '/%myFunc\(([0-9]+)\)/u';
$one = preg_match_all($regex, $text, $matches);
$regex2 = '/%otherFunc\(([0-9]+)\)/u';
$two = preg_match_all($regex2, $text, $matches2);

目標は次のような短いものです。

$regex = '/%myFunc|otherFunc\(([0-9]+)\)/u';
preg_match_all($regex, $text, $matches);
4

1 に答える 1

3

かっこを使用して、式をグループ化し、優先順位を制御できます。

%(this|that)\(\)

新しいキャプチャグループを作成したくない場合は、そのために非キャプチャグループを使用することもできます。これは優先順位のみであり、副作用はありません。

%(?:this|that)\(\)
于 2013-03-05T22:03:57.663 に答える