解析多个正则表达式的性能

时间:2013-08-27 04:21:15

标签: .net regex vb.net performance

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

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

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

我的想法是:

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

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

EDIT 正如所建议的,我使用组来代替。如果有人想看到我想出的东西:

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

NB:这是针对特定格式的地址,具体针对我的需求。

1 个答案:

答案 0 :(得分:2)

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

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

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