如何解决在Perl正则表达式中使用包含特殊字符的变量
| 我正在尝试在数组中搜索包含$ 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);
}
}
}
解决方法
您可以使用quotemeta,该参数返回其参数的值,并用所有非\“ word \”字符加反斜杠。
$lookfor2 = quotemeta $inbucket[0];
或者,您可以使用\\Q
转义,这在perlre中进行了讨论。简而言之,它将引用(禁用)模式元字符,直到遇到“ 3”为止。
if ( $var =~ /\\Q$lookfor2/i ) {
, 我想你在找
$var =~ /\\Q$lookfor2/i
Perl常见问题
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。