#c# #regex
#c# #регулярное выражение
Вопрос:
У меня есть веб-вызов, который выдает мне следующий обратный вызов в виде строки:
ZIPCODE | CITY | STREET NR | , |Phone Number with (Tel.) on the beginning
ПРИМЕР1 :
83661 Lenggries Marktstr. 14, Tel. 08042 91860
Я хотел бы спросить специалистов по регулярным выражениям, можно ли разбить их на группы?
Моя лучшая попытка на данный момент:
([0-9]{5})(s[a-zA-Z]. )(s[a-zA-Z]. )(s.*)(s.[0-9]*)(s.[0-9]*)
что приводит к:
- 83661
- Lenggries
- Marktstr. 14,
- Тел.
- 08042
- 91860
Это работает для примера выше, но не является стабильным регулярным выражением, например:
ПРИМЕР2:
83620 Feldkirchen-Westerham Aiblinger Str. 7, Tel. 08063 8562
результаты в:
- 83620
- Feldkirchen-Westerham Aiblinger
- Стр. 7,
- Тел.
- 08063
- 8562
Может быть, кто-нибудь может помочь мне с этой проблемой, я понятия не имею, как ее решить. Данные также не могут быть предоставлены ни в каком другом формате.
с уважением и заранее благодарен Матиасу
Комментарии:
1. Что, если город и адрес содержат пробелы? Как бы вы узнали, где заканчивается первое и начинается второе?
2. Это невозможно, потому что city и street могут содержать пробелы (как уже писал @silkfire). Теоретически вы могли бы использовать базу данных почтовых индексов для поиска названия города, но даже этот подход не будет хорошо работать на практике, потому что, если город содержит пользовательский ввод, он может содержать опечатки или дополнительные данные (например, «Гейдельберг Виблинген»).
3. Также обратите внимание, что существуют адреса без названия улицы, с названием улицы, но без номера, с частью названия улицы, содержащей цифры (в Мангейме) и т.д. Регулярные выражения, похоже, не очень подходят для проверки адреса.
4. Пример того, где совпадение городов не будет работать: Франкфурт-на-Майне
Ответ №1:
Попробуйте это:
^(d{5})s*([a-zA-Z]. )(?=bd ,)(d ).*Tel.s([d ] )$
Смотрите демонстрацию в PCRE
Смотрите демонстрацию кода C #
Ответ №2:
Проверьте это на Python!
^[ -0-9a-zA-ZäöüÄÖÜß.] ?s (d (s?[a-zA-Z])?)s*(?:$|(|[A-Z]{2})s (d{5})s*(. )
если вы хотите увидеть демонстрацию! Нажмите здесь