$out="MMNT123 out in a1 a2";
if($out=m(MM\w+\s\w+))
print 'pattern matched';
else
print 'pattern not matched';
我如何获得“模式匹配”作为输出......?
$out="MMNT123 out in a1 a2";
if($out=m(MM\w+\s\w+))
print 'pattern matched';
else
print 'pattern not matched';
我如何获得“模式匹配”作为输出......?
在 Perl 中,if/else 块必须有大括号。您还需要使用=~
运算符:
if($out =~ m(MM\w+\s\w+)) {
print 'pattern matched';
} else {
print 'pattern not matched';
}
您有语法错误,因为您在if .. else ...
语句中省略了大括号。
$out = "MMNT123 out in a1 a2";
if ($out = m(MM\w+\s\w+)) {
print 'pattern matched';
} else {
print 'pattern not matched';
}
但这仍然不起作用,因为您使用的是赋值运算符 ( =
),而您应该使用绑定运算符 ( =~
)。
$out = "MMNT123 out in a1 a2";
if ($out =~ m(MM\w+\s\w+)) {
print 'pattern matched';
} else {
print 'pattern not matched';
}
为了完整起见,我应该指出:
$out = m(MM\w+\s\w+)
实际上是:
$out = ($_ =~ /MM\w+\s\w+/)
即“匹配$_
正则表达式的内容,如果匹配则设置$out
为真值,如果不匹配则设置为假值”。我猜 的内容$_
与您的正则表达式不匹配,所以$out
总是得到一个错误的值。
if 不需要大括号
print 'pattern matched' if $out =~ /MM\w+\s\w+/;