如何使用正则表达式解析街道地址?
How to parse street address with Regex?
我正在研究一个正则表达式,以按街道号码、街道名称、城市、州和邮政编码解析完整地址。
我想出了一个适用于大多数情况的非常好的正则表达式,但是,在某些情况下它会失败。我需要帮助改进它。这是我目前拥有的
Pattern pattern = Pattern.compile("^([\d-]{0,}[\s-]{0,}[\d/]+)[\s]{0,}");
如果街道地址的格式很好,地址以没有附加字母的街道号码开头,这就可以正常工作。例如:
123 Street Address, CA, 55555
工作正常。
但是 123 4th Street Address, CA, 55555
将导致:
1234 => street number
th Street => street name
我对解析地址做了很多研究,我想出的这个解决方案几乎是我找到的最简单的解决方案。只需要多做一些调整。提前致谢。
您不应将所有街道地址分解为一个正则表达式。您最好使用多个正则表达式来处理街道地址,以涵盖广泛的场景,例如
- 123 Whosebug 方式
- 第五大道 5000 号
- 1 黑客之路 5 号楼
我正在研究一个正则表达式,以按街道号码、街道名称、城市、州和邮政编码解析完整地址。
我想出了一个适用于大多数情况的非常好的正则表达式,但是,在某些情况下它会失败。我需要帮助改进它。这是我目前拥有的
Pattern pattern = Pattern.compile("^([\d-]{0,}[\s-]{0,}[\d/]+)[\s]{0,}");
如果街道地址的格式很好,地址以没有附加字母的街道号码开头,这就可以正常工作。例如:
123 Street Address, CA, 55555
工作正常。但是
123 4th Street Address, CA, 55555
将导致:1234 => street number th Street => street name
我对解析地址做了很多研究,我想出的这个解决方案几乎是我找到的最简单的解决方案。只需要多做一些调整。提前致谢。
您不应将所有街道地址分解为一个正则表达式。您最好使用多个正则表达式来处理街道地址,以涵盖广泛的场景,例如
- 123 Whosebug 方式
- 第五大道 5000 号
- 1 黑客之路 5 号楼