我对perl代码做了一些更改,但我无法理解为什么下面的正则表达式与输入行不匹配。
my $regex='^(780200703303)\\s+(\\d+)\\s+(\\d+)\\s+(\\d+)\\s+(\\d+)\\s+(\\d+)\\s+(\\d+)\\s+(\\d+)\\s+(\\d+)\\s+([1-9]\\d*)\\s+([1-9]\\d*)\\s+$';
my $line='780200703303 2 0 3 0 0 0 0 0 0 1 ';
if ( $line =~ m/$regex/ )
{
print "Matched";
}
提前致谢
答案 0 :(得分:6)
因为0
与[1-9]\d*
不匹配。
您是否考虑过使用以下内容:
my @fields = split ' ', $line;
if ($fields[0] == 780200703303) {
...
}
答案 1 :(得分:3)
您的测试字符串与正则表达式不匹配。
my $regex='\\s+([1-9]\\d*)\\s+([1-9]\\d*)\\s+$';
my $line=' 0 1 ';
0
与([1-9]\d*)
使用qr
operator让你的正则表达式更简单。
my $regex= qr/\s+([1-9]\d*)\s+([1-9]\d*)\s+$/;