Regex 在Perl正则表达式中使用包含特殊字符的变量
我试图在数组中搜索包含$inbucket[0]的行。我的某些$inbucket[0]值包含特殊字符。这个脚本完全符合我的要求,直到我遇到一个特殊的角色 我希望查询不区分大小写,匹配字符串$var的任何部分,并逐字处理特殊字符,就像它们不特殊一样。有什么想法吗 谢谢Regex 在Perl正则表达式中使用包含特殊字符的变量,regex,perl,variables,special-characters,Regex,Perl,Variables,Special Characters,我试图在数组中搜索包含$inbucket[0]的行。我的某些$inbucket[0]值包含特殊字符。这个脚本完全符合我的要求,直到我遇到一个特殊的角色 我希望查询不区分大小写,匹配字符串$var的任何部分,并逐字处理特殊字符,就像它们不特殊一样。有什么想法吗 谢谢 sub loopthru() { warn "Loopthru begun on $inbucket[0]\n"; foreach $c (@chat) { $var = $c->msg;
sub loopthru() {
warn "Loopthru begun on $inbucket[0]\n";
foreach $c (@chat) {
$var = $c->msg;
$lookfor2 = $inbucket[0];
if ( $var =~ /$lookfor2/i ) {
($to,$from) = split('-',$var);
$from =~ s/\.$//;
print MYFILE "$to\t$from\n";
&fillbucket($to);
&fillbucket($from);
}
}
}
您可以使用,它返回其参数的值,并将所有非“word”字符反斜杠
$lookfor2 = quotemeta $inbucket[0];
或者您可以使用中讨论的\Q
转义。简而言之,它将引用(禁用)模式元字符,直到遇到\E
if ( $var =~ /\Q$lookfor2/i ) {
我想你在找我
$var=~/\Q$lookfor2/i
可能重复到显而易见的地方:\Q\E不能逃脱符号($或@);变量插值发生在解析的早期阶段。