【发布时间】:2011-08-08 21:19:31
【问题描述】:
我想用 Perl 替换另一个字符串中的固定字符串。两个字符串都包含在变量中。
如果被替换的字符串不可能包含任何正则表达式元字符,我可以这样做:
my $text = 'The quick brown fox jumps over the lazy dog!';
my $search = 'lazy';
my $replace = 'drowsy';
$text =~ s/$search/$replace/;
唉,我希望它适用于任意 fixed 字符串。例如,这应该使 $text 保持不变:
my $text = 'The quick brown fox jumps over the lazy dog!';
my $search = 'dog.';
my $replace = 'donkey.';
$text =~ s/$search/$replace/;
相反,这会将dog! 替换为donkey.,因为点与感叹号匹配。
假设变量内容本身不是硬编码的,例如,它们可以来自文件或命令行,有没有办法引用或标记变量的内容,以便它们不会被解释为常规这种替换操作中的表达式?
或者有没有更好的方法来处理固定字符串?最好是仍然允许我使用类似正则表达式的功能,例如锚点或反向引用。
【问题讨论】:
标签: perl string substitution