Regex从完成的地址中提取地址街道



我想从完整的地址中提取(地址街道(。我尝试了几个Regex,但它不适用于所有的地址格式。

我尝试使用此Regex模式:(^[0-9]+[\sA-Za-z0-9]+(

pattern1 = r"(^[0-9]+[sA-Za-z0-9]+)"
addressRegex = re.compile(pattern1)
text = "9207 ASTORIA BLVD, East Elmhurst, NY 11369"
match = addressRegex.search(text)
match.group(0)
>>> 9207 ASTORIA BLVD

但是在某些情况下失败了,可以看看这个regex_tester

以下是我的文档中的示例地址。我已经突出显示了整个地址中的地址街道部分。

9207 ASTORIA BLVD,East Elmhurst,NY 11369
601 B SURF AVE APT 13N布鲁克林纽约11224
西部大道2241号加利福尼亚州NORCO 92860
89 MILFORD ST纽约州布法罗市14220
5550斯普林谷路G-25号。达拉斯。TX 75254
865 Branford Lane NWLilburn,GA 30047
新泽西州泽西市蒙茅斯街273-A号,邮编07302
新泽西州ASBURY PARK海洋大道1501号2605单元07712
纽约州斯塔滕岛汤普金斯大道879号10305
苏尔夫大街601号布鲁克林纽约11224
威斯康星州密尔沃基北88街3301号53222
2012 RICHVIEW RDMOUNT VERNON IL 62864

也许下面的内容可以捕获您地址的街道部分。你可以尝试将你的替代品捕获到一个替代品中:

^.*?b(?:BLVD|AVE(?:NUE)?|ST(?:REET)?|R(?:OA)?D|LANE)b

如果需要,可以扩展这些替代方案,请参阅在线演示。

  • ^-启动字符串锚点
  • .*?-换行符以外的任何字符的惰性匹配
  • b-字边界
  • (?:-打开非捕获组:BLVD|AVE(?:NUE)?|ST(?:REET)?|R(?:OA)?D|LANE-目前给出的所有街道名称结尾的替代方案。
    • )-关闭非捕获组
  • b-字边界

我假设地址中的第一个数字是street no,下面的代码从字符串中提取第一个no。我给你发一个的例子

str = "601 B SURF AVE APT 13N BROOKLYN NY 11224"
import regex as re
addressNo = []
addressNo.append(re.search(r'd+', str).group())

您可以使用循环提取所有街道编号。

最新更新