你能告诉我,为什么这样的:Perl的正则表达式不工作
($revID, $who, $date, $nlines) =~ m/(\w+) \| (\w+) \| ([0-9-]*) .*\| ([0-9]*) line/;
与此不匹配:
r36043 | cmiuch | 2014-10-01 10:51:01 -0400(Wed,01 Oct 2014)| 1行
revID,谁,日期全部空出来。
你能告诉我,为什么这样的:Perl的正则表达式不工作
($revID, $who, $date, $nlines) =~ m/(\w+) \| (\w+) \| ([0-9-]*) .*\| ([0-9]*) line/;
与此不匹配:
r36043 | cmiuch | 2014-10-01 10:51:01 -0400(Wed,01 Oct 2014)| 1行
revID,谁,日期全部空出来。
您需要对存储实际输入的变量应用正则表达式。即,$var =~ m//;
my $var = "r36043 | cmiuch | 2014-10-01 10:51:01 -0400 (Wed, 01 Oct 2014) | 1 line";
my ($revID, $who, $date, $nlines) = $var =~ m/(\w+) \| (\w+) \| ([0-9-]+) .*\| ([0-9]+) line/;
print $revID."\n".$who."\n".$date."\n".$nlines."\n";
输出:
r36043
cmiuch
2014-10-01
1
这岂不是简单的''上split' |'? – TLP 2015-04-03 01:51:18
可能 - 我想放弃日期的第二部分(时间和偏移量等)和最后的“行”以获得数字。 – 2015-04-03 16:55:41