У меня довольно неприятная проблема в разработке регулярного выражения для подготовки адресов для геокодирования с помощью Nominatim. Я работаю с немецкими адресами, которые выглядят так:
Von-der-Leyen-Platz 1 47506 Neukirchen-Vluyn
Schildstraße 52531 Übach-Palenberg
Finkenratherstraße Straße 4a 52134 Herzogenrath
Format: Street Number Postal code City
Я хочу добиться того, чтобы первые литералы после номеров улиц не встречались. Для этого я использую следующее регулярное выражение:
(\d+).*?\s+(.+)
Это соответствует третьему адресу 4 52134 Герцогенрат. Но не на Финкенратерштрассе 4 52143 Герцогенрат. Другая проблема, которую я увидел, - это второй адрес, так как у него нет номера улицы. Вот почему я хотел отфильтровать создание регулярного выражения, которое может фильтровать следующую структуру:
Street name {number if available} Postal code (5 digits) City name
Почтовый код всегда состоит из 5 цифр, и структура всегда одинакова, просто иногда отсутствует номер улицы.
Есть ли способ, чтобы описать это как регулярное выражение?