-1
$out="MMNT123 out in a1 a2";
    if($out=m(MM\w+\s\w+))
        print 'pattern matched';
    else
        print 'pattern not matched';

我如何获得“模式匹配”作为输出......?

4

3 回答 3

4

在 Perl 中,if/else 块必须有大括号。您还需要使用=~运算符:

if($out =~ m(MM\w+\s\w+)) {
    print 'pattern matched';
} else {
    print 'pattern not matched';
}
于 2013-11-05T13:06:46.210 回答
3

您有语法错误,因为您在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总是得到一个错误的值。

于 2013-11-05T15:04:49.867 回答
0

if 不需要大括号

print 'pattern matched' if $out =~ /MM\w+\s\w+/;
于 2013-11-05T13:11:18.113 回答