Ich weiß nicht, warum es 2 Übereinstimmungen abgesehen von der Eingabe mit dieser Regex gibt, wenn ich nur 1 Übereinstimmung erwartet.Warum erzeugt diese Regex-Aufnahme 2 Treffer?
preg_match(/_(\d(-\d){0,3})\./,$str,$matches);
in diesem Dateistringformat name_A-B-C-D.ext
.
Ich würde erwarten, ein einziges Spiel wie folgt zu erhalten:
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
Aber dies ist das Ergebnis, das ich bekomme:
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
Ich wünsche nur A
bis zu D
erfassen, wenn sie mit ihrer voran ein Bindestrich. Dieser Code ist verwendbar und ich kann das 2. Match einfach ignorieren, aber ich würde gerne wissen, warum es dort ist. Ich kann nur annehmen, dass es etwas mit meinen beiden Fanggruppen zu tun hat. Wo ist mein Fehler?
Es hilft zu wissen, wie man eine Gruppe nicht gefangen macht;) – Kim