为什么这个正则表达式不给出 1?
>perl -e "$x = 'abcd\\e'; print \"$x\n\"; ($x =~ '\\e') ? print 1:print 0";
abcd\e
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
的预期结果。