gpt4 book ai didi

regex - 在某些情况下,为什么在Perl模式中将 `\Q` `\E`解释为文字 `Q` `E`?

转载 作者:行者123 更新时间:2023-12-04 13:39:48 24 4
gpt4 key购买 nike

如果'是定界符,或者从变量进行插值,则正则表达式\QW\ER匹配QWER而不是WR(在Perl的v5.6.2,v5.10.1和v5.18.2以及http://www.perlfect.com/articles/regextutor.shtml上观察到)i。例如,模式中的\Q \E不会解释为引号转义,而是文字Q E

例子:

#!/usr/bin/env perl
$re = '\QW\ER';
print '$re = ', $re, "\n";
while (<DATA>)
{
print qw(/\QW\ER/), " matches ", $_ if /\QW\ER/;
print qw(m'\QW\ER'), " matches ", $_ if m'\QW\ER';
print qw(/$re/), " matches ", $_ if /$re/;
}
__DATA__
QWERT
WRONG

输出:
$re = \QW\ER
m'\QW\ER' matches QWERT
/$re/ matches QWERT
/\QW\ER/ matches WRONG

(只有最后一行是我所期望的。)

这是一个错误吗? ... 一项功能? ...记录在任何地方?

最佳答案

如果您使用带有转义符的字符串定义正则表达式,则可能会观察到此情况:

# don't use strings if you have escapes:
# my $re = '(?<=\QW\E)R';
my $re = qr/(?<=\QW\E)R/;
/($re)/ and print "$_: $1\n" for qw(QWERT WRONG);

关于regex - 在某些情况下,为什么在Perl模式中将 `\Q` `\E`解释为文字 `Q` `E`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21113830/

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