これは、PHP 固有の質問というよりも、一般的な正規表現に関する質問です。
次のようなさまざまな文字列が与えられます。
A/B/PA ID U/C/D
そして、次を使用して、スペース (「/PA ID U」) を含む中央のスラッシュのセグメントを抽出しようとしています。
preg_match('/(\/PA .+)(\/.+|$)/', $string, $matches);
しかし、期待していた「/PA ID U」ではなく、「/PA ID U/C/D」を取得していました。
最後のグループの「$」よりも「/.+」の一致を優先させるにはどうすればよいですか?
その他の注意事項:
文字列が大きく異なるため、最後のグループが別の「/somethingsomething」または「」のいずれかに一致する必要があります。「/.+」のみを照合すると、「A/B/PA ID U」のように「/PA ID U」が行末にあると取得できません。
基本的に、次のように特定のセグメントを抽出できる必要があります。
与えられた:
"A/B/PA ID U/PA ID U/C/D"
エキス:
(A), (B), (PA ID U), (PA ID U), (C), (D)
[アップデート]
split()
orの使用を避けようとしてexplode()
います。これは、「PA ID U」パターンを個別に一致させる必要があることを意味するためです。スラッシュで区切られたセグメントを抽出するだけでなく、部分文字列が特定のパターンと一致することを検証する必要があります。