gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 14:09:38 24 4
gpt4 key购买 nike

我正在尝试在数组中搜索包含 $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 ,它返回其参数的值,其中所有非“单词”字符都带有反斜杠。

$lookfor2 = quotemeta $inbucket[0];

或者您可以使用 \Q 转义,这在 perlre 中进行了讨论。 。简而言之,它将引用(禁用)模式元字符,直到遇到 \E

if ( $var =~ /\Q$lookfor2/i ) {

关于regex - 在 Perl 正则表达式中使用包含特殊字符的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6348567/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com