2012-08-09 148 views
2

我想递增字符串中所有数字的出现次数perl eg。如果我的字符串是$ str =“转到第34页并读第3行” 它应该改为$ str =“转到第35页并阅读第4行”。递增字符串中所有数字的出现次数perl

我尝试使用

$str =~ s/[\d]/$&+1/g 

但它给输出字符串即 “进入页面数34 + 1和读3 + 1RD线”

回答

9

如何:

$ echo "foo 1 bar 2" | perl -pE 's/(\d+)/$1+1/ge' 
foo 2 bar 3 

重点是e正则表达式选项,将替换零件作为表达式处理。

+0

感谢队友的工作! – 2012-08-09 07:42:58

+1

@shahidali:如果你同意一个答案,你应该接受它... – pavel 2012-08-09 18:21:45

+0

另外,一定要使用捕获组()和$ 1作为答案建议,而不是$&如问题中所述。 $&在大多数版本的Perl 5中都会导致严重的性能损失。 – sundar 2013-08-03 17:44:58

相关问题