- Вы сделали так, чтобы оно совпадало со всеми , но числами (
^
в начале списка символов \d
)
- Вы еще не сделали эти два числа необязательными.
[^\d,.]
означает, что требуется ровно один из этих символов. И поскольку он может соответствовать только одной из запятой или точке с цифрой, вы не можете делать десятичные дроби. Если вы хотите определить количество раз, вам нужно добавить .
для одного или более, *
для нуля или более или сделать диапазон {min,max}
после [^\d,.]
.
- Вы не захватываете два числа, даже если они совпадают - пропущено
()
.
- Возможно, вы захотите сопоставить, только если указаны оба значения: долгота и широта, а не одно или другое - отсутствует группировка их обоих (но без захвата).
Попробуйте тестеры регулярных выражений, такие как https://regex101.com/r/PtwC0b/4 Хотя в Apache я не думаю, что вам нужно экранировать /
с \
, поэтому игнорируйте \/
.
Конечный результат что-то как /lists/([a-zA-z]+)/(?:([\d.]+)/([\d.]+)/){0,1}
Группа (?: ... ){0,1}
не захватывает, но гарантирует, что все в ней является одной группой - т.е. предоставляет только долготу и широту (и ровно ноль или один их набор). Для полного объяснения см. https://regex101.com/r/PtwC0b/4
Это не было проверено на Apache.