假设我想用以下内容替换文件上的字符串
name nAmE naMEbb NAME
并希望用“dave”替换“name”这个词,但保留原始文本的大小写.例如,我想要的输出是,
dave dAvE daVEbb DAVE
是否有任何单行代码(最好在Perl中,所以我可以在许多文件中进行就地替换)?
编辑
除非两个字符串具有完全相同的长度,否则问题是不明确的.我们假设它确实如此.
perlFaq上有一些解决方案:
http://perldoc.perl.org/perlfaq6.html#How-do-I-substitute-case-insensitively-on-the-LHS-while-preserving-case-on-the-RHS?
原文链接:https://www.f2er.com/regex/356947.htmlhttp://perldoc.perl.org/perlfaq6.html#How-do-I-substitute-case-insensitively-on-the-LHS-while-preserving-case-on-the-RHS?
其中一个解决方案允许通过定义子例程(preserve_case)在单行中执行替换:
$string = "this is a TEsT case"; $string =~ s/(test)/preserve_case($1,"success")/egi; print "$string\n";
这打印:这是一个SUcCESS案例