不久前,我创建了一个程序来处理 vCard 文件。这可以通过以下方式几乎完美地完成:
(?<FIELD>[^\s:;]+)(;(?<PARAM>[^:]+))*:(?<CONTENT>.*(?>\r\n[ \t].*)*)$
但是,这不适用于新的(2011 年 8 月)vCard 4.0 标准。问题是 vCard 4.0 文件使用以下布局:
FIELD(:)(;([PARAMETER]="[CONTENT],[MORE CONTENT]"(;))[DATATYPE(:)]:)CONTENT[newline]
例如
ADR;type="home,work":(address)
如您所见,我想捕获整个参数,包括 type="..." 的东西。
所以我的问题是:我的代码是否可以修改,或者我是否必须编写两个进程(一个用于旧类型,一个用于新的 4.0 版本;理想情况下,我希望两者都支持),如果可以,怎么做?(顺便说一下,我使用的是 c# 和 .net 4.0)。
问候。