我还是一个正念新手。
我有"格式很好"地址和数据源只会给我很好的澳大利亚地址。
我到目前为止:
~([\w\d\-\/\.]*)\s*([\w\d '\-\.\ ()]+)~
鉴于地址,
123/500-550 Main Street
它会给我两组(这就是我想要的):
123/500-550
Main Street
但是我一直试图容纳像:
这样的空间123 / 500-550 Main Street
123 / 500-550 Main Street
123 / 500 - 550 Main Street
我是否可以使用^
和前瞻来检测街道名称的开头,例如[\w\d '\-\.\ ()]+
,然后获取其左边的所有内容?如果是这样,怎么样?
答案 0 :(得分:0)
答案 1 :(得分:0)
虽然通常不建议,但您可以使用
^ # start of line
(?P<street_number>[-/\d\h]+)\h+ # capture -, \d and \h => street_number
(?P<street_name>[A-Z][\w\h]+) # capture sth. with UPPERCASE,
# followed by \w and \h => street_name
$ # end of line
请参阅a demo on regex101.com(并注意修饰符!)。
<小时/> 更好地使用带有 以前已知的 街道名称的库(或使用上面的表达式查询它)。[-'.\w\h]
。请注意,大多数字符不需要在类中进行转义。