なぜこの正規表現を使用して入力とは別に2つの一致が見つかったのか分かりません。この正規表現のキャプチャで2つのマッチが生成されるのはなぜですか?
preg_match(/_(\d(-\d){0,3})\./,$str,$matches);
このファイルの文字列形式はname_A-B-C-D.ext
です。
私はこのようなシングルマッチを得ることを期待する:
Example A
[0] => name_A-B-C-D.ext
[1] => A-B-C-D
Example B
[0] => name_A-B-C.ext
[1] => A-B-C
をしかし、これは私が得る結果である:私はそので始まる場合D
までA
をキャプチャしたい
Example A
[0] => name_A-B-C-D.ext
[1] => A-B-C-D
[2] => -D
Example B
[0] => name_A-B-C.ext
[1] => A-B-C
[2] => -C
ハイフン。 このコードは使用可能で、2番目の試合を無視することはできますが、その理由を知りたいと思います。私はそれが私の2つのキャプチャグループと何か関係があると仮定することしかできません。私のエラーはどこですか?
グループを非キャプティブにする方法を理解するのに役立ちます。 – Kim