Regex用于从凌乱的地址获取街道名称和号码

时间:2017-05-22 22:26:58

标签: regex regex-lookarounds regex-greedy

我有这个凌乱的地址列表,有些是干净的,有些不是

Av. Chorrillos # 1759 Local 1082 Exterior Jumbo
Av. Balmaceda N° 2355 Local BS - 121 / Subterráneo sector servicios
Tarapaca N° 729

结构通常为name of street + N°|#|nothing + number + extra stuff

我想删除这些额外的内容,以便上面列表中的预期输出为:

Av. Chorrillos # 1759 
Av. Balmaceda N° 2355
Tarapaca N° 729

我尝试使用字母组合和回顾:

([a-zA-Z\s]+\d+)

#给了我麻烦,所以我也尝试了将它们包括在内

([(\w|°|#)\s]+\d+)

但仍然没有运气。

我知道地址上的正则表达式是一场噩梦,但任何符合上述三种情况的正则表达式都符合我列表的95%,这对我来说已经足够了!

我在python regex中使用此功能以防万一。

您可以在regex101

上找到地址列表和我的正则表达式尝试

(有些地址在street + number的相关信息之前有额外的信息,但我可以搞砸那些地址

1 个答案:

答案 0 :(得分:1)

根据您的规格。我想出了这个正则表达式。

正则表达式: ^.*?

<强>解释

  • (?:[N°#Nº]\s*)?从字符串的开头消耗所有内容。由于匹配是懒惰的,因此匹配到下一部分(?:[N°#Nº]\s*)?

  • N°#Nº匹配可选的\d+,后跟零个或多个空格。

  • <p>paragrah 1</p> <p>paragrah 2</p> <p>paragrah 3</p> <img src=""></img> 匹配数字。

<强> Regex101 Demo