用多个单词城市对单行地址进行分组

Grouping single line addresses with multiple word cities

编辑 2:已解决。我最终只需要在街道和城市名称之间用逗号分隔。它足以满足我的需求。我使用的最终正则表达式是:

^(\d+) (\S+.+),[ ]?(.+),[ ]?([A-Za-z]{2})[ ]?(\d{5})$ 对于那些好奇的人。

你好, 我正在尝试按照以下格式解析在单行中输入的地址:

1234 Street Name Unit #225 Harpers Ferry, VA 12345

5547 Street Name City Name, WY 12345

9958 Street Name Apt 25 New York, NY 12345

编辑:将第二个示例更改为更能代表我正在使用的数据集,并添加了可能输入的第三个示例。

而且我在处理这些示例中出现的两个单词 cities 的可能性时遇到了麻烦。 我天真的实现是

(?<Building>\b\d+)\s(?<Street>.+)(?<City>\b.+),\s(?<State>.{2})\s(?<Zip>\d{5}\b)

如果城市只包含一个词,这似乎有效。然而,使用第一个示例会 return 以下结果:

Building: 1234

Street: Street Name Unit #225 Harpers

City: Ferry

State: VA

Zip: 12345

有没有办法在街道尽头不加分隔符的情况下覆盖这种情况and/or单位名称?

这个呢?

(?<Building>\b\d+)\s(?<Street>.*(?:#\d+|No Unit Number))\s(?<City>\b.+),\s(?<State>.{2})\s(?<Zip>\d{5}\b)

demo