0

我正在尝试将经过验证的地址拆分为基本组件(单元编号、街道编号、街道名称等)。为此,我正在通过字符串向后(从右到左)工作:

  • 匹配 [AZ'-] 个字符 => 街道名称
  • 匹配 [\d-]+[A-Za-z]{0,1} => 街道号码(这匹配诸如 10-12 或 11B 之类的东西,只会有 0 或 1 个字母)
  • 将字符串的其余部分与 Unit Number 匹配

现在,我可以编写三个正则表达式模式来进行匹配。我不确定的是如何使用它们。这将用于地址的批处理。

我的想法是:

  • 在地址上运行每个模式并将每个匹配项保存在适当的地址对象属性上
  • 在每一步之后进行某种匹配/替换以缩短字符串(我打算使用向前看和向后看)

关于如何最有效地使用正则表达式的任何建议都是最有帮助的。

编辑正如建议的那样,我使用组来代替。如果有人想看看我想出了什么:

(?<unit>(.*))\s(?<number>([\d-]+[A-Za-z]{0,1}))\s+(?<name>([\sA-Za-z'-]+$))

注意:这是针对一种非常特殊的地址格式,具体到我需要什么。

4

1 回答 1

2

正则表达式能够匹配整个字符串;只需将部分括在括号中即可形成捕获组,例如:

^(\w*)\s*([\d-]+[A-Za-z]?)\s*(.+)$

然后检查Match.Groups您需要的部件的集合。

于 2013-08-27T04:42:46.817 回答