Regex необязательно все, разделенные пробелом или запятой (город, штат)

jsgoupil спросил: 13 октября 2017 в 06:59 в: regex

Я пытаюсь получить улицу, город, штат и почтовый индекс из неправильно сформированного списка адресов, все, кроме "улицы", необязательно последовательно. (У меня может быть улица, улица + город, улица + город + штат, улица + город + штат + почтовый индекс). Разделителями являются либо запятая + пробел, либо только пробел.

Пока у меня есть

^(?<STREET>.*?)(?<SEPARATOR1>(?: *-{1,2} *)|(?:, ?))(?<CITY>[a-z-' ]*)?((?<SEPARATOR2>(?: )|(?:, ))(?<STATE>AL|AK|AS|AZ|AR|CA|CO|CT|DE|DC|FM|FL|GA|GU|HI|ID|IL|IN|IA|KS|KY|LA|ME|MH|MD|MA|MI|MN|MS|MO|MT|NE|NV|NH|NJ|NM|NY|NC|ND|MP|OH|OK|OR|PW|PA|PR|RI|SC|SD|TN|TX|UT|VT|VI|VA|WA|WV|WI|WY))?((?<SEPARATOR3>(?: )|(?:, ))(?<ZIP>[0-9]{5}(-[0-9]{4})?))?

У меня проблемы с получением захвата после захвата CITY если он разделен только пробелом.

Тестовые данные:

123 Ave Ave - Hoquiam WA 98103
123 Ave Ave - Hoquiam, WA 98103
123 Ave Ave - Hoquiam, WA 98103-1345
123 Ave Ave - Hoquiam
123 Ave Ave - Ocean Shores WA
123 Ave Ave - Ocean Shores, WA
123 Ave Ave - D'ile, WA
123 Ave Ave

Что я делаю не так?

https:// regex101 .com / г / v476Gx / 1

0 ответов