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

时间:2017-12-18 00:26:36

标签: c# regex string

我对正则表达式查询有点问题。

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

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

我需要将地址编入

  1. StreetNumber
  2. 子编号
  3. StreetName
  4. 我设法让以下变体发挥作用:

    • 60B Goldberg street
    • StreetNumber = 60B
    • Number = 60
    • SubNumver = B
    • StreetName = Goldberg street
    • 12 / a Salisbury rd
    • StreetNumber = 12 / a
    • Number = 12
    • SubNumber = a
    • StreetName = Salisbury rd
    • 12/2 Salisbury rd
    • StreetNumber = 12/2
    • Number = 12
    • SubNumber = 2
    • StreetName = Salisbury rd

    我所挣扎的是地址的子编号大于9。

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

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

    任何帮助将不胜感激。

    由于

1 个答案:

答案 0 :(得分: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]*)

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