Я не знаю, почему найдено 2 совпадения помимо ввода с использованием этого регулярного выражения, когда я ожидал только 1 совпадение.
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
, если перед ним стоит дефис. Этот код можно использовать, и я могу просто игнорировать второе совпадение, но я хотел бы знать, почему оно там. Я могу только предположить, что это как-то связано с двумя моими группами захвата. Где моя ошибка?