10.24 2008-08-22 16:47 采纳率: 0%
浏览 265
已采纳

我如何执行字符串上的 Perl 替换,同时保留原来的?

In Perl, what is a good way to perform a replacement on a string using a regular expression and store the value in a different variable, without changing the original?

I usually just copy the string to a new variable then bind it to the s/// regex that does the replacement on the new string, but I was wondering if there is a better way to do this?

$newstring = $oldstring;
$newstring =~ s/foo/bar/g;

转载于:https://stackoverflow.com/questions/22836/how-do-i-perform-a-perl-substitution-on-a-string-while-keeping-the-original

  • 写回答

7条回答 默认 最新

  • 斗士狗 2008-08-22 17:08
    关注

    This is the idiom I've always used to get a modified copy of a string without changing the original:

    (my $newstring = $oldstring) =~ s/foo/bar/g;
    

    In perl 5.14.0 or later, you can use the new /r non-destructive substitution modifier:

    my $newstring = $oldstring =~ s/foo/bar/gr; 
    

    Note: The above solutions work without g too. They also work with any other modifiers.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog