正则表达式从vcard中挑选出值

时间:2014-03-27 12:20:58

标签: c# regex vcard

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:我刚刚要求挑选出能够选择其他值的日期值。给出的链接对我没有帮助。

2 个答案:

答案 0 :(得分:0)

没有DateTime验证:

\d{4}\-\d{2}\-\d{2}

答案 1 :(得分:0)

你所拥有的非常接近,但需要做一些改变:

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

我上面指出的部分是不必要的(如果是圆括号)或导致问题。

将空格更改为类似\S+的内容,并删除额外的内容:

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

regex101 demo