この正規表現を使用した入力とは別に、一致が 1 つしかないと予想していたのに、なぜ 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
しかし、これは私が得る結果です:
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
ハイフンが前に付いている場合に限り、キャプチャA
したいだけです。D
このコードは使用可能で、2 番目の一致は無視できますが、その理由を知りたいです。2 つのキャプチャ グループに関係があるとしか思えません。私のエラーはどこですか?