首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Regex捕获组解析地址

使用Regex捕获组解析地址
EN

Stack Overflow用户
提问于 2022-06-07 22:48:41
回答 1查看 98关注 0票数 4

我正在尝试将这些地址解析成组,并且我有一个正则表达式:

代码语言:javascript
复制
(^.*?(?:Lane|Street|Boulevard|Crescent|Place|Road|Highway|Avenue|Drive|Circuit|Parade|Telopea|Nicklin Way|Terrace|Square|Court|Close|Endeavour Way|Esplanade|East|The Centreway|Mall|Quay|Gateway|Low Way|Point|Rd|Morinda|Way|Ave|St|South Steyne|Broadway|HQ|Expressway|Street|Castlereagh|Meadow Way|Track|Kulkyne Way|Narabang Way|Bank)),(?:)? ?(.*?),? ?([A-Z]{2,3}),? ?(\d{,4})$

它捕获并分组这些地址:

代码语言:javascript
复制
139 McKinnon Road, PINELANDS, NT, 829
108 East Point Road, Fannie Bay, NT, 820
3-11 Hamilton Street, Townsville City, QLD, 4810
40 17 Geranium Street, THE GARDENS, NT, 820
Lot 9 Island Point Road, ST GEORGES BASIN, NSW, 2540
316 Sturt Street and 511 Flinders Street, Townsville City, QLD, 4810

但没有用以下格式捕获地址:

代码语言:javascript
复制
1, 3, 5 Demeter Street & 12 Hermes Avenue ROUSE HILL NSW 2155
31 Stephen Street SOUTH TOOWOOMBA QLD 4350

我想把这些地址分成几个不同的类别,例如:

代码语言:javascript
复制
street_address = 1, 3, 5 Demeter Street & 12 Hermes Avenue
subrub = ROUSE HILL
state = QLD
postcode = 4350

如何使用上述表达式捕获两个地址?这是我的Regex码

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-08 00:00:39

您可以使用特定的regex分别匹配四个组中的每个组,使用以下方法:

  • Group 1,包含名为<street_address>的地址
代码语言:javascript
复制
.*(?:Lane|Street|Boulevard|Crescent|Place|Road|Highway|Avenue|Drive|Circuit|Parade|Telopea|Nicklin Way|Terrace|Square|Court|Close|Endeavour Way|Esplanade|East|The Centreway|Mall|Quay|Gateway|Low Way|Point|Rd|Morinda|Way|Ave|St|South Steyne|Broadway|HQ|Expressway|Street|Castlereagh|Meadow Way|Track|Kulkyne Way|Narabang Way|Bank)
  • 群2,包含子摩擦,称为<subrub>
代码语言:javascript
复制
[A-Za-z ]+
  • Group 3,包含状态,称为<state>
代码语言:javascript
复制
[A-Z]+
  • Group 4,包含邮政编码,名为:
代码语言:javascript
复制
\d+

您的最终regex就是使用可选逗号和强制空格,?连接这些regex。

代码语言:javascript
复制
(?P<street_address>.*(?:Lane|Street|Boulevard|Crescent|Place|Road|Highway|Avenue|Drive|Circuit|Parade|Telopea|Nicklin Way|Terrace|Square|Court|Close|Endeavour Way|Esplanade|East|The Centreway|Mall|Quay|Gateway|Low Way|Point|Rd|Morinda|Way|Ave|St|South Steyne|Broadway|HQ|Expressway|Street|Castlereagh|Meadow Way|Track|Kulkyne Way|Narabang Way|Bank)),? (?P<subrub>[A-Za-z ]+),? (?P<state>[A-Z]+),? (?P<postcode>\d+)

检查演示这里

注意:在Python代码中,您将能够按相应的名称提取每个组。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72538285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档