Regex 街道地址中单词的正则表达式

Regex 街道地址中单词的正则表达式,regex,preg-match,Regex,Preg Match,我知道依赖正则表达式来获取街道地址的危险。然而,我必须使用regex,我的地址都是澳大利亚的,并且格式良好,来自一个受监管的来源 我正在成功使用组从以下位置返回街道编号和街道名称 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 N

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

我正在成功使用组从以下位置返回街道编号和街道名称

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”


小提琴在这里:

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

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

门牌号和街道名称。我使用的是
preg_match
,所以我用正则表达式组填充了一个数组-一个用于数字,一个用于街道。另外,不需要转义字符组中的所有这些特殊字符。但是也不痛。谢谢。我从小组中使用小组中学到了很多:)仅供参考,我现在在
^((?:unit | apt | townhouse | lot | penthouse | level)?[\w\d\-\/\.\&]*)\s*([\w\d'\-\.\()+)~I
欢迎您。提示:要捕获第一个逗号之前的所有内容,可以使用:=
[^,]+(?=,)