【发布时间】:2016-07-20 18:39:36
【问题描述】:
我使用 Regex 来匹配 ISO8601 样式的日期/时间或日期,使用以下内容:-
my $regexdate = qr/((?:19|20)[[:digit:]]{2})[-]?([[:digit:]]{2})[-]?([[:digit:]]{2})/;
my $regextime = qr/([[:digit:]]{2})[:]?([[:digit:]]{2})[:]?([[:digit:]]{2})/;
my $datime = qr/(?:$regexdate[ T]?$regextime)|$regexdate/;
如果我在列表上下文中使用匹配结果会更容易,所以尝试了:-
my @result = ($file =~ m/$datime/p);
当我尝试打印时,我收到了许多 uninitialized value 警告,表明该列表包含 9 个元素,而不是我期望的 6 或 3 个。
print "$file\t=> ${^MATCH}\t@result\n";
根据我对文档的阅读,我期望只有成功的交替匹配才能返回值,这显然不是 Perl 实际所做的。
是否有任何简单的方法可以返回成功的交替,或者我需要尝试其他方法。
【问题讨论】:
-
您指的是文档的哪一部分?