正则表达式处理属性地址和分组

问题描述 投票:0回答:1

我有一个正则表达式查询的小问题。

我正在尝试将字符串中的地址解析为单独的变量。我的正则表达式如下。

?(<的StreetAddress>(<编号> [\ d] +)(<子编号> [A-ZA-b])|????(<编号> [\ d] +)[/](<子编号> [A-ZA-Z0-9]))\ S(?<街道> [A-ZA-Z0-9 \ S] *)

我需要将地址分成两部分

  1. 街牌号码
  2. 子编号
  3. 街道名称

我设法让以下变化工作:

  • 60B Goldberg街
  • StreetNumber = 60B
  • 数字= 60
  • SubNumver = B.
  • StreetName = Goldberg街
  • 12 / a Salisbury rd
  • StreetNumber = 12 / a
  • 数字= 12
  • SubNumber = a
  • StreetName = Salisbury rd
  • 12/2 Salisbury rd
  • StreetNumber = 12/2
  • 数字= 12
  • SubNumber = 2
  • StreetName = Salisbury rd

我正在努力解决的问题是地址的子编号大于9。

  • 20/12 Salisbury rd
  • StreetNumber = 12
  • 数字= 1
  • SubNumber = 2
  • StreetName = Salisbury rd

我似乎无法将第一个数字隔离为街道号码。

任何帮助,将不胜感激。

谢谢

c# regex string
1个回答
2
投票

你在?<subNumber>[A-Za-z0-9]之后错过了一个加号

(?<streetAddress>(?<number>[\d]+)(?<subNumber>[A-Za-z?])|(?<number>[\d]+)[/]?(?<subNumber>[A-Za-z0-9]+))\s(?<street>[A-Za-z0-9\s]*)

然而,只是一个注释,使用正则表达式的街道地址可能就像击中移动目标,即有很多可能的组合和格式我怀疑你会得到一致的结果

© www.soinside.com 2019 - 2024. All rights reserved.