Perl替换参数
我想修改Perl脚本,但我有一个问题 我阅读了关于“tr”命令的文档,但我的问题是要替换的字符串何时是可自定义的 例如,我的变量“$car”包含“&”et,我想用“\&”替换这个字符串 我试过了,但没用Perl替换参数,perl,Perl,我想修改Perl脚本,但我有一个问题 我阅读了关于“tr”命令的文档,但我的问题是要替换的字符串何时是可自定义的 例如,我的变量“$car”包含“&”et,我想用“\&”替换这个字符串 我试过了,但没用 ligne =~ tr/$car/\$car/ 谁能帮我 谢谢的模式将在编译时编译。对于动态替换,需要使用正则表达式替换 tr//所做的就是音译。这意味着它将用另一个字符替换一个字符。您试图做的是替换,您想用另一个字符串替换一个灵活的字符串。这些是根本不同的事情 您还需要转义反斜杠\\。如果只
ligne =~ tr/$car/\$car/
谁能帮我
谢谢的模式将在编译时编译。对于动态替换,需要使用正则表达式替换
tr//
所做的就是音译。这意味着它将用另一个字符替换一个字符。您试图做的是替换,您想用另一个字符串替换一个灵活的字符串。这些是根本不同的事情
您还需要转义反斜杠\\
。如果只放一个,它将转义美元符号$
,并用文本字符串'$car'
替换$car
的内容
$ligne =~ s/$car/\\$car/
如果您不确定$car
中有什么内容,您应该避开它。其中可能有一些字符在正则表达式中具有特殊意义,例如
。\Q\E
将转义这些字符,因此它们将被视为文字字符
$ligne =~ s/\Q$car\E/\\$car/
另请参见,它不是直接重复。的模式在编译时编译。对于动态替换,需要使用正则表达式替换
tr//
所做的就是音译。这意味着它将用另一个字符替换一个字符。您试图做的是替换,您想用另一个字符串替换一个灵活的字符串。这些是根本不同的事情
您还需要转义反斜杠\\
。如果只放一个,它将转义美元符号$
,并用文本字符串'$car'
替换$car
的内容
$ligne =~ s/$car/\\$car/
如果您不确定$car
中有什么内容,您应该避开它。其中可能有一些字符在正则表达式中具有特殊意义,例如
。\Q\E
将转义这些字符,因此它们将被视为文字字符
$ligne =~ s/\Q$car\E/\\$car/
另请参阅,这不是直接重复。由于
$car
包含一个caractère而不是regex模式,因此应使用s/\Q$car\E/\\$car/
(或速度较慢的s/(\Q$car\E)/\\$1/
)。由于$car
包含一个caractère而不是regex模式,因此应使用s/\Q$car E/\$car(或速度较慢的s/(\Q$car\E)/\\$1/
)。