2010-07-19 36 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