cc9*_*6ai 3 regex string perl replace backslash
如何替换变量内的反斜杠?
$string = 'a\cc\ee';
$re = 'a\\cc';
$rep = "Work";
#doesnt work in variable
$string =~ s/$re/$rep/og;
print $string."\n";
#work with String
$string =~ s/a\\cc/$rep/og;
print $string."\n";
Run Code Online (Sandbox Code Playgroud)
输出:
a\cc\ee
Work\ee
Run Code Online (Sandbox Code Playgroud)
因为你在正则表达式中使用它 - 你可能想要quotemeta()或\Q和\E(见perldoc perlre)
perl -E'say quotemeta( q[a/asf$#@ , d] )'
# prints: a\/asf\$\#\@\ \,\ d
# Or, with `\Q`, and `\E`
$string =~ s/\Q$re\E/$rep/og;
print $string."\n";
Run Code Online (Sandbox Code Playgroud)