gpt4 book ai didi

regex - 如何用 Perl 中的计算表达式替换?

转载 作者:行者123 更新时间:2023-12-01 20:26:07 25 4
gpt4 key购买 nike

有一个文件 dummy.txt

内容是:

 9/0/2010
9/2/2010
10/11/2010

我必须将月份部分 (0,2,11) 更改为 +1,即 (1,3,12)我编写的替换正则表达式如下

 $line =~ s/\/(\d+)\//\/\1+1\//;

正在打印

9/0+1/2010
9/2+1/2010
10/11+1/2010

如何使其在数字上添加 - 3 而不是执行字符串连接? 2+1??

最佳答案

三个变化:

  • 您必须使用 e 修饰符允许表达式更换零件。
  • 在全局范围内进行更换您应该使用 g 修饰符。如果每行只有一个日期,则不需要这一点。
  • 您在替换端使用 $1,而不是反向引用

这应该有效:

$line =~ s{/(\d+)/}{'/'.($1+1).'/'}eg;

此外,如果您的正则表达式包含您正在使用的分隔符(在您的情况下为/),最好选择不同的分隔符(上面的{}),这样您不必转义正则表达式中的分隔符,使您的正则表达式干净。

关于regex - 如何用 Perl 中的计算表达式替换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3939788/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com