惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Microsoft Security Blog
Microsoft Security Blog
J
Java Code Geeks
GbyAI
GbyAI
aimingoo的专栏
aimingoo的专栏
L
LangChain Blog
I
InfoQ
D
Docker
F
Fortinet All Blogs
Y
Y Combinator Blog
Martin Fowler
Martin Fowler
月光博客
月光博客
B
Blog
Engineering at Meta
Engineering at Meta
T
Tailwind CSS Blog
罗磊的独立博客
博客园_首页
G
Google Developers Blog
Stack Overflow Blog
Stack Overflow Blog
Recent Announcements
Recent Announcements
D
DataBreaches.Net
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
B
Blog RSS Feed
IT之家
IT之家
V
V2EX

博客园 - biggates

Linux Screen 超简单用法 ldconfig gdb前端Nemiver 在Ubuntu中使用autofs自动加载Virtual Box数据空间 -lm 必须放在 gcc 命令的最后 常用WinXP小工具集合 VritualBox 数据空间使用手记 在 Google Buzz 中使用格式 x64 WAMP + Oracle 环境搭建 查看Oracle Dump文件的结构 解决 Vista 下 IceGrid 调试时的监视错误 - biggates 使用163镜像在线安装CentOS 令人痛苦的SyncML同步协议错误 C#中从WSDL文件生成Web 服务 有图有真相,百度屏蔽网站行为仍在继续 [转]CSS Hacks 浏览器功能一览:IE曾经垃圾,现在垃圾,将来仍然很垃圾 三步实现 OpenSearch 功能 学习笔记
使用 Java 正则表达式解析 VCard
biggates · 2008-12-07 · via 博客园 - biggates

倒腾了一整天配置环境、熟悉 Java,终于差不多了。

根据 http://www.imc.org/pdi/vcard-21.txt 的规范和手头的一些实机数据,写出了以下正则:

正则

正则写好以后的逻辑很简单,注意各个正则匹配的时候是第几个 group 就行了。

具体处理逻辑

现在想起来,主要是在配置 Java 环境,还有调试正则表达式的地方花了时间。需要注意的几点:

Java 不支持形如 (<?name>.+ ) 的分组命名,这个很不方便,而且调试错卡了一段时间。

使用形如 (?m) 的前缀配置模式,代码长度减少了不少,不知道性能上会有多大损失。

开启  CASE_INSENSITIVE 和 UNICODE 都会降低速度。

StringBuilder 比 StringBuffer 快,但是前者不支持多线程。

另外,推荐一款 Java 下的正则表达式验证工具:JRegexpTester 。虽然时常死掉,并且功能不多,但是 Find 用起来还算方便,并且勾选了 Combilation 之后,验证过的代码直接拿来就能用,不用再费劲的加转义字符了。对 RegLib 的支持也不错。

.NET 下当然用 The Regulator 啦。RegexBuddy 虽然支持巨多语言,并且口碑也很好(帮助文件尤其厉害),但是要付 USD 39.95 才能用,不是我等贫民的首选。(Crack?能用Crack就不算贫民啦)