倒腾了一整天配置环境、熟悉 Java,终于差不多了。
根据 http://www.imc.org/pdi/vcard-21.txt 的规范和手头的一些实机数据,写出了以下正则:
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
正则写好以后的逻辑很简单,注意各个正则匹配的时候是第几个 group 就行了。
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
现在想起来,主要是在配置 Java 环境,还有调试正则表达式的地方花了时间。需要注意的几点:
Java 不支持形如 (<?name>.+ ) 的分组命名,这个很不方便,而且调试错卡了一段时间。
使用形如 (?m) 的前缀配置模式,代码长度减少了不少,不知道性能上会有多大损失。
开启 CASE_INSENSITIVE 和 UNICODE 都会降低速度。
StringBuilder 比 StringBuffer 快,但是前者不支持多线程。
另外,推荐一款 Java 下的正则表达式验证工具:JRegexpTester 。虽然时常死掉,并且功能不多,但是 Find 用起来还算方便,并且勾选了 Combilation 之后,验证过的代码直接拿来就能用,不用再费劲的加转义字符了。对 RegLib 的支持也不错。
.NET 下当然用 The Regulator 啦。RegexBuddy 虽然支持巨多语言,并且口碑也很好(帮助文件尤其厉害),但是要付 USD 39.95 才能用,不是我等贫民的首选。(Crack?能用Crack就不算贫民啦)