用于从杂乱地址中获取街道名称和号码的正则表达式

Regex for getting just name of street and number from messy address

我有这个乱七八糟的地址列表,有些是干净的有些不是:

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 的相关信息之前有额外的信息,但我可以搞砸那些)

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

正则表达式: ^.*?(?:[N°#Nº]\s*)?\d+

解释:

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

  • (?:[N°#Nº]\s*)? 匹配可选的 N°#Nº 后跟零个或多个空格。

  • \d+ 匹配数字。

Regex101 Demo