繁体   English   中英

正则表达式匹配日期

[英]Regex for matching dates

如何从这部分xml中找到带有正则表达式的有效性开始日期和结束日期?

<Response>
  <Identification v="XXXXX"/>
  <Type v="YYY"/>
  <CreationDateTime v="2013-01-18T10:00:00Z"/>
  <ValidityPeriod v="2013-01-21T05:00Z/2013-01-22T05:00Z"/>
 <The rest of the file i'm not iterested in..../>

到目前为止,我发现[1-9] [0-9] {3}-。+?T。+?Z /.+?Z可以找到属性的值并将该字符串分成两个日期字符串。 或使用[1-9] [0-9] {3}-。+?T [^。] +?(Z | [+-]。+)来查找三个日期,仅使用最后两个日期

但是,我该如何找到两个分别具有两个单独日期的精确匹配。

我必须从存档中提取一些xml文件(包含大量XML文件),出于性能原因,我无法对所有文件进行反序列化。

使用JDOM或其他XML解析语言代替正则表达式。 它将简化对此文本的解析。 或者,您知道该元素的名称为“ CreationDateTime”,该属性的名称为“ v”,并且该值包含在双引号中。 您可以利用所有这些信息来利用字符串拆分来解析它,从而更轻松地获取您感兴趣的行和值。

尝试:

my $d = qr([1-9][0-9]{3}-.+?T.+?Z);
my ($d1, $d2) = ($xml =~ /ValidityPeriod v=\"($d)\/($d)\"/);
print "$d1 $d2\n" if $d1;

$ d正则表达式可以随您所需而复杂。 “。*”就足够了:-)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM