代码之家  ›  专栏  ›  技术社区  ›  vervenumen

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

  •  4
  • vervenumen  · 技术社区  · 9 年前

    我有一个这样的字符串:

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

    我想转换成

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

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

    我尝试过:

    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:2:4:1,2,4 15 110 114
    

    有什么简单的方法可以实现我的目标吗?

    1 回复  |  直到 9 年前
        1
  •  11
  •   mpapec    9 年前

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

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