Perl正则表达式括号匹配

3

我有一个变量$next,其中包含可能包含括号的字符串,例如trna(tgc)。我想要使用此匹配语句if ($data[$i][2]=~/$next/){ ..},即使实际上为真,它总是返回false。我尝试过这个if ($data[$i][2]=~/trnA\(tgc\)/){ ..}并且它可以工作。 我的问题是:如何在变量$next中在每个括号前插入'\'?

2个回答

5

你需要引用元字符。

试试这个。

print "match" if( $var1 =~ /\Q$var2\E/ );

4

我认为您需要使用quotemeta函数:

$next = "trna(tgc)";
$search = quotemeta($next);
if ($data[$i][2]=~/$search/){ 
    //..
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接