首页 > 解决方案 > 街道地址中单词的正则表达式

问题描述

我知道依靠正则表达式获取街道地址的危险。但是,我必须使用正则表达式,而且我的地址都是澳大利亚的,并且来自一个受监管的来源,格式正确。

我成功地使用组从以下返回街道号码和街道名称

1 Main Street, Sydney NSW 2000
1A Main Street, Sydney NSW 2000
1/20 Main Street, Sydney NSW 2000
1/20A Main Street, Sydney NSW 2000
U1/20A Main Street, Sydney NSW 2000

我的(PHP)表达式是~([\w\d\-\/\.\&]*)\s*([\w\d '\-\.\ ()]+)~

但我无法适应它来使用:

Unit 1/20 Main Street, Sydney NSW 2000

我的小组给我“单位”和“1”

小提琴在这里:https ://regex101.com/r/aLRNgp/1

标签: regexpreg-match

解决方案


我相信有问题的正则表达式仅用于匹配您地址的门牌号和街道名称部分。您的正则表达式看起来很复杂,但是要使用前缀 Unit 解决问题:

^((?:Unit )?[\w\-\/\.\&]*)\s*([\w '\-\.\ ()]+)

演示


推荐阅读