将正则表达式存储在变量中然后找到模式(Perl)?

时间:2014-06-12 06:48:46

标签: regex perl

嗨我在Perl中遇到正则表达式问题。如果我将正则表达式存储在perl中的变量中,则无法匹配。为什么会那样?我该如何解决这个问题?下面是我打印输出失败的代码:

my $str1 = 'abc..';
my $str2 = 'abcde';

my $pcode = $str1;

print $pcode;

if( $pcode =~ /$str2/)
{
    print "Got";
}
else
{
    print "Failed";
}

2 个答案:

答案 0 :(得分:1)

你需要颠倒你的逻辑。正则表达式位于//内,而不是字符串。

给你的变量更好的名字,当你颠倒你的逻辑时,它会变得更加明显。

my $pattern = 'abc..';
my $string = 'abcde';

if ($string =~ /$pattern/) {
    print "Got";
} else {
    print "Failed";
}

答案 1 :(得分:0)

您的if( $pcode =~ /$str2/)订单错误。你需要改变它:

if( $str2 =~ /$pcode/)

基本上,$pcode包含模式,因此它在//内部以及您想要检查模式的字符串位于=~

前面