正则表达式从vcard中挑选值

本文关键字:挑选 vcard 正则表达式 | 更新日期: 2023-09-27 17:53:53

BEGIN:VCARD
VERSION:3.0
PRODID:-//Apple Inc.//iOS 5.1//EN
N:Tom;First ;Mid;Pre;Suffg
FN:Pre First Mid Tom Suffg
NICKNAME:Nick
X-PHONETIC-FIRST-NAME:Fn
X-PHONETIC-LAST-NAME:Ln
ORG:The Organization;
TITLE:VP Investor Relations
TEL;type=WORK;type=VOICE;type=pref:003-000-11111
item1.ADR;type=WORK;type=pref:;;;test;VA;12345;
BDAY;value=date:1992-03-27
item2.X-ABDATE;type=pref:2014-03-27
item2.X-ABLabel:_$!<Anniversary>!$_
item3.X-ABDATE:2013-03-27
item3.X-ABLabel:_$!<Other>!$_
NOTE:Test note
REV:2014-03-27T10:25:11Z
UID:2DCC7DC1-04F4-4A1E-A268-80E346F610AD
END:VCARD

我需要知道正则表达式来挑选日期值(生日,周年纪念日,其他)。

任何帮助都将是非常感激的。

Eidt:我只是要求挑选日期值,我可以挑选其他值。

正则表达式从vcard中挑选值

您所拥有的非常接近,但需要进行一些更改:

(?<strElement>(BDAY)) (:(?<strBDAY>([^'n'r]*)))
              ^    ^  ^            ^        ^ ^

我上面指出的部分要么是不必要的(在括号的情况下),要么是造成问题的。

将空格更改为'S+之类的东西,并删除额外的双亲:

(?<strElement>BDAY)'S+:(?<strBDAY>[^'n'r]*)

regex101 demo

没有DataTime验证:

'd{4}'-'d{2}'-'d{2}