#java #regex
Вопрос:
У меня есть регулярное выражение, основанное на формате адреса : ([0-9-]*) ?([p{L}*,. '-]*) ?([0-9 ]*) ?([p{L}*,. '-]*) ([0-9]{5}) ?([p{L}*,. '-]*)
Он может совпадать с этим : 16 Rue du Pont Louis-Philippe 75000 Париж
Но я бы тоже хотел, чтобы это регулярное выражение соответствовало этому формату : 75000 Paris 16 Rue du Pont Louis-Philippe
Кто-нибудь может мне помочь, пожалуйста ?
Ответ №1:
В шаблоне есть много дополнительных деталей. Вы можете сделать последние 2 группы необязательными, но вам придется изменить кванторы на 1 или более раз
, чтобы предотвратить частичное совпадение (или добавить ^
в шаблон для утверждения начала строки).
([0-9-] ) ([p{L}*,. '-] ) ([0-9 ] ) ([p{L}*,. '-] )(?: ([0-9]{5}) ([p{L}*,. '-] ))?
Комментарии:
1.Спасибо, что это работает ! Но у меня есть еще одна проблема, у меня другой шаблон обращения :
16 Rue du Pont Louis-Philippe 75000 Paris
75000 Paris 16 Rue du Pont Louis-Philippe
16 Rue du pont Louis-Philippe 1er 75000 Paris
75000 Paris 16 Rue du pont Louis-Philippe 1er
2. @Octaz-это все вариации? Сопоставление адреса может быть довольно сложным из-за всех различных обозначений.