我执行下面的代码:正则表达式不匹配按预期
#!/usr/bin/perl -w
my $filter1="^p1c|^p2c|^p3c|^p11c|^p23c|^p105csi1m1|^p105csi1m2|^p105csi1m13|^p105csi2m14|^p101csi1m1|^p101csi1m2|^p101csi1m13|^p101csi2m14|^p103csi1m1|^p103csi1m2|^p103csi1m13|^p103csi2m16|^p102csi1m1|^p102csi1m2|^p102csi1m13|^p102csi2m16|^p100csi1m4|^p100csi1m5|^p100csi2m13|^p100csi1m14";
my $filter2="^p105csi2m13|^p105csi1m14";
$n1="p105csi1m14";
my $m1 .= "$n1 " if($n1 =~ m/$filter1/);
my $m2 .= "$n1 " if($n1 =~ m/$filter2/);
print "\nmatch 1 => $m1\n";
print "\nmatch 2 => $m2\n";
从上面的代码的输出如下:
match 1 => p105csi1m14
match 2 => p105csi1m14
预期的结果是如下:
match 1 =>
match 2 => p105csi1m14
我不确定它为什么会这样。有人可以帮助解决上述问题吗?
'p105csi1m1'是'p105csi1m14'的子字符串。 – 2013-02-18 15:35:59
正则表达式^^p105csi1m1'匹配你的字符串。你打算在正则表达式的末尾有一个'$'吗? – geoffspear 2013-02-18 15:36:21
啊..有帮助...非常感谢 – user2083779 2013-02-18 15:43:24