Perl:为什么正则表达式带字符的双反斜杠不能识别带单反斜杠的字符串?

问题描述 投票:0回答:1

为什么这个正则表达式不给出 1?

>perl -e "$x = 'abcd\\e'; print \"$x\n\";  ($x =~ '\\e') ? print 1:print 0";
abcd\e
0
regex perl escaping
1个回答
0
投票

正则表达式

($x =~ '\e')
不匹配,因为
'\e'
尝试查找后跟
'e.'
的文字反斜杠 但是,在字符串
$x ('abcd\e')
中,
'e.'
之前有一个实际的反斜杠 要解决此问题,请使用单个反斜杠在你的正则表达式中,像这样:

修复正则表达式:

perl -e "$x = 'abcd\\e'; print \"$x\n\";  ($x =~ '\\\\e') ? print 1 : print 0";

通过此调整,

Regex
确实会在字符串中找到反斜杠,后跟
'e'
,并且您的脚本将产生
1
的预期结果。

© www.soinside.com 2019 - 2024. All rights reserved.