(?<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).
问候.
解决方法 试试以下正则表达式:(?<FIELD>[^\s:;]+)(;(?<ParaM>[^=:;]+)=\"?(?<VALUE>[^:;]+)\"?)*:(?<CONTENT>[^;]*;?)*
该查询似乎同时处理了here提供的vCard 3.0示例:
ADR;TYPE=WORK:;;100 Waters Edge;Baytown;LA;30314;United States of AmericaADR;TYPE=HOME:;;42 Plantation St.;Baytown;LA;30314;United States of America
和4.0的例子:
ADR;TYPE=work;LABEL="42 Plantation St.\nBaytown,LA 30314\nUnited States of America" :;;42 Plantation St.;Baytown;LA;30314;United States of America
它还匹配vCard 4.0规范here中的此示例:
ADR;GEO="geo:12.3457,78.910";LABEL="Mr. John Q. Public,Esq.\n Mail Drop: TNE QB\n123 Main Street\nAny Town,CA 91921-1234\n U.S.A.":;;123 Main Street;Any Town;CA;91921-1234;U.S.A.
我的免责声明是我没有专门针对vCard的任何专业知识,我只是浏览了一部分规范,并在玩RegExr时查看了示例,因此我可能会遗漏一些边缘情况.
总结以上是内存溢出为你收集整理的c# – vCard 4.0正则表达式全部内容,希望文章能够帮你解决c# – vCard 4.0正则表达式所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)