Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 在Perl正则表达式中使用包含特殊字符的变量_Regex_Perl_Variables_Special Characters - Fatal编程技术网

Regex 在Perl正则表达式中使用包含特殊字符的变量

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;

我试图在数组中搜索包含$inbucket[0]的行。我的某些$inbucket[0]值包含特殊字符。这个脚本完全符合我的要求,直到我遇到一个特殊的角色

我希望查询不区分大小写,匹配字符串$var的任何部分,并逐字处理特殊字符,就像它们不特殊一样。有什么想法吗

谢谢

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不能逃脱符号($或@);变量插值发生在解析的早期阶段。