.net 解析多个正则表达式提高性能
我试图将已验证的地址拆分为基本组件(单元、街道、街道名称等)。为此,我通过字符串向后(从右到左)操作:.net 解析多个正则表达式提高性能,.net,regex,vb.net,performance,.net,Regex,Vb.net,Performance,我试图将已验证的地址拆分为基本组件(单元、街道、街道名称等)。为此,我通过字符串向后(从右到左)操作: 匹配[A-Z'-]个字符=>街道名称 匹配[\d-]+[A-Za-z]{0,1}=>街道编号(这与10-12或11B等内容匹配,只有0或1个字母) 将字符串的其余部分与单元号匹配 现在,我能够编写三个正则表达式模式来进行匹配。我不确定的是如何使用它们。这将用于地址的批处理 我的想法是: 在地址上运行每个模式,并在相应的地址对象属性上保存每个匹配项 在每一步之后,使用某种匹配/替换来缩短字
- 匹配[A-Z'-]个字符=>街道名称
- 匹配[\d-]+[A-Za-z]{0,1}=>街道编号(这与10-12或11B等内容匹配,只有0或1个字母)
- 将字符串的其余部分与单元号匹配
- 在地址上运行每个模式,并在相应的地址对象属性上保存每个匹配项
- 在每一步之后,使用某种匹配/替换来缩短字符串(我将使用向前看和向后看)
(?<unit>(.*))\s(?<number>([\d-]+[A-Za-z]{0,1}))\s+(?<name>([\sA-Za-z'-]+$))
(?(.*)\s(?([\d-]+[A-Za-z]{0,1}))\s+(?([\sA-Za-z'-]+$)
NB:这是一种非常特殊的地址格式,特定于我需要的内容。正则表达式能够匹配整个字符串;只需将各部分括在括号内即可形成捕获组,例如:
^(\w*)\s*([\d-]+[A-Za-z]?)\s*(.+)$
然后检查所需零件的
Match.Groups
集合。您可能会发现以下信息很有用:。德克萨斯州奥斯汀市有一个“E49 1/2 St”,根据出版物,街道号码也可以是小数。谢谢,但我不是美国的,我们有一个市场标准的地址验证产品,它在保存时会去掉x/y类型的地址(即使我们在这里写地址时也会使用)。哦,天哪,我可以打自己一巴掌。我完全忘记了团体。我使用命名组快速地将我的三个模式重写为一个。完美的