如何通过这段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文件),出于性能原因,我无法反序列化所有文件。
答案 0 :(得分:1)
使用JDOM或其他XML解析语言而不是正则表达式。它将简化解析此文本。或者,您知道该元素名为“CreationDateTime”,您知道该属性名为“v”,并且您知道该值包含在双引号内。您可以使用所有这些信息来利用字符串拆分来解析它,以便更轻松地获取您感兴趣的行和值。
答案 1 :(得分:0)
尝试:
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 regexp可以像你想要的那样复杂。 “。*”就够了: - )