在perl中增加特定位置的整数

时间:2015-07-17 11:14:25

标签: regex perl increment

我有一个这样的字符串:

# as a generator
all_combinations(range(25))  # timing: 100000 loops, best of 3: 2.53 µs per loop

# as a list
list(all_combinations(range(25)))  # timing: 1 loops, best of 3: 9.37 s per loop

我想转换成

1,2,4 0:5 1:10 3:14

只有“:”之前的数字必须加1。

我试过了:

1,2,4 1:5 2:10 4:14

奇怪的回归

perl -w -e '$s="1,2,4 0:5 1:10 3:14"; 
$s =~ s/([0-9]*):/print(($1+1).":")/ge; 
print("$s\n");'

有没有简单的方法来实现我的目标?

1 个答案:

答案 0 :(得分:11)

你足够接近,但它必须匹配至少一个数字,然后是:,并且替换部分必须返回所需的结果,而不是打印它。

my $s = "1,2,4 0:5 1:10 3:14"; 
$s =~ s/([0-9]+) (?=:)/ $1+1 /xge; 
print $s, "\n";