Лучшее регулярное выражение для получения названия улицы с частичного адреса - PullRequest
1 голос
/ 15 апреля 2019

Я пытаюсь извлечь название улицы из нескольких примеров, содержащих номер и улицу

Я пробовал ^\d+(-\d+|\w)? ([EWNS] )?, но это не проходит второй тестовый пример.

Iнужны эти тестовые случаи для прохождения

2 Main Street -> 'Main Street'

5 & 6 Shore Lane -> 'Shore Lane'

7/8 Bay Way -> 'Bay Way'

73-97 Park Dr E -> 'Park Dr E'

2781 Boyle Street -> 'Boyle Street'

267 1/2 Brad St -> 'Brad St'

433 W. 49th St. -> 'W 49th St'

Ответы [ 2 ]

1 голос
/ 15 апреля 2019

Одним из вариантов может быть сопоставление цифр в начале с необязательными пробелами и классом символов, который будет соответствовать либо & или / или -, и захват адреса в группе захвата:

\A\d+(?: ?[&\/-] ?\d+)? (\w+(?: \w+)*)

Это будет соответствовать

  • \A Начало строки
  • \d+ Совпадение 1+ цифр
  • (?:
    • ?[&\/-] ?\d+ Соответствует необязательному пробелу, либо & или / или -, необязательный пробел и 1+ цифры
  • )? Закрыть группу и сделать ее необязательной
  • ( Совпадение пробелов и начало захвата группы
    • \w+(?: \w+)* Совпадение 1+ слов и повторение 0+ раз с пробелом и 1+ слов
  • ) Закрыть группу захвата

Regex demo

0 голосов
/ 15 апреля 2019

Это должно сделать работу: \d\s(\D+)$

Вы можете увидеть это в действии здесь: https://rubular.com/r/tcbE7nhNkSQDyS

По сути, мы выбираем только те символы, которые нам нужны, определяя правило для искомой строки. то есть строка, которая может содержать нецифровые символы (\D+), которая заканчивается, когда заканчивается строка ($), и начинается с числа, за которым следует пробел (\d\s).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...