在Perl中的变量中使用反斜杠替换文本

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)

Eva*_*oll 9

因为你在正则表达式中使用它 - 你可能想要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)