@stayHARD

Как вытянуть отдельные элементы из строки?

Привет, Тостер.
У меня небольшой вопрос к тем людям, которы разбираются в regexp(поправьте, если есть решение и без регулярных выражений).
У меня есть много строк вида:
133 NE 2nd Ave 1912, Miami, FL 33132
24 NW 102nd Street, Miami, FL 33150
15630 SW 109 Avenue, Miami, FL 33157
PO Box 2991, Miami, FL 33269
16469 Ne 30th Ave, Miami, FL 33160
80 SW 8th Street Suite 2000, Miami, FL 33130
Miami, FL 33176
2732 South West 131st Pl, Miami, FL 33175-7151


Мне нужно отдельно получить:
- улицу и номер дома
- город
- штат
- почтовый индекс

Я не прошу делать это за меня! (Это специально для модераторов!)
Я прошу указать мне на готовые(?) решения, если они есть или услышать идеи и предложения как это можна лучше реализовать.


Гугл выдает много вопросов на стаке, где в ответ сыпят вот такими регулярками:
\d{1,4}( \w+){1,5}, (.*), ( \w+){1,5}, (AZ|CA|CO|NH), [0-9]{5}(-[0-9]{4})?

/\s+(\d{2,5}\s+)(?![a|p]m\b)(([a-zA-Z|\s+]{1,5}){1,2})?([\s|\,|.]+)?(([a-zA-Z|\s+]{1,30}){1,4})(court|ct|street|st|drive|dr|lane|ln|road|rd|blvd)([\s|\,|.|\;]+)?(([a-zA-Z|\s+]{1,30}){1,2})([\s|\,|.]+)?\b(AK|AL|AR|AZ|CA|CO|CT|DC|DE|FL|GA|GU|HI|IA|ID|IL|IN|KS|KY|LA|MA|MD|ME|MI|MN|MO|MS|MT|NC|ND|NE|NH|NJ|NM|NV|NY|OH|OK|OR|PA|RI|SC|SD|TN|TX|UT|VA|VI|VT|WA|WI|WV|WY)([\s|\,|.]+)?(\s+\d{5})?([\s|\,|.]+)/i

/^[0-9]* (.*), (.*) [a-zA-Z]{2} [0-9]{5}(-[0-9]{4})?$/

Но это все не то, ведь мне не нужна целая запись, а нужно разбить её.
Была еще идея делать split по ",", но иногда нет записи с улицей, а только город и штат.

Спасибо за уделенное время, жду Ваших предложений.
  • Вопрос задан
  • 270 просмотров
Пригласить эксперта
Ответы на вопрос 1
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
23 мая 2024, в 07:43
2800 руб./за проект
23 мая 2024, в 07:18
10000 руб./за проект
23 мая 2024, в 02:40
5000 руб./за проект