2010-07-19 58 views
6

端部的整数I具有以下列格式的字符串:递增在字符串在Perl

\main\stream\foo.h\3 

它可以具有更多或更少的“节”,但总是以斜线后面是结束整数。其他例子包括:

\main\stream2309\stream222\foo.c\45 

\main\foo.c\9 

我需要,在Perl,增加的数量在字符串的结尾,并独自离开休息。我在本网站上找到了一个与我想要做的完全相同的示例(请参阅Increment a number in a string in with regex),只有语言是Javascript。给出的解决方案是:

.replace(/\d+$/,function(n) { return ++n }) 

我需要在Perl中做同样的事情。

回答

10

您可以使用/e正则表达式修饰符将可执行代码放入替换字符串中。

喜欢的东西:

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

应该工作。

+1

工作就像一个魅力!谢谢。 – user396162 2010-07-19 20:00:08

+1

太糟糕的自动增量限于匹配'/^[a-zA-Z] * [0-9] * \ z /'的字符串 – 2010-07-19 21:15:08

3

尝试$var =~ s/(\d+$)/($1 + 1)/e