正则表达式自动增量替换

时间:2011-06-07 00:02:23

标签: regex perl pcre auto-increment textwrangler

正则表达式中是否有一个字符串可以指示它自动增加它的替换,无论它们是数字还是字母。

谢谢

例如,我的字符串应为1, 2, 3, 4, 5,但它们目前编号为1, 1, 1, 1, 1

如何将这5个相似字符串中的数字替换为1, 2, 3, 4, 5

1 个答案:

答案 0 :(得分:4)

我不熟悉TextWrangler的语法;然而,它使用pcre所以这应该是你想要的,只要你有办法为你的增量变量分配一个初始值(在这种情况下,我使用$ii)...脚本下面用“pizza-0”,“pizza-1”替换任何出现的“pizza-x”......

@foo = ('pizza', 'pizza-a', 'pizza-b', 'pizza-c');
$ii = 0;
foreach (@foo) {
    $_ =~ s/(pizza-)[a-z]/"$1".$ii++/e;
    print "$_\n";
}

结果...

[mpenning@mpenning-t60 Desktop]$ perl foo.pl 
pizza
pizza-0
pizza-1
pizza-2

魔法来自s///e;$ii++;请确保将非递增字符串括在引号中并与句点连接。

或者,只需在文本文件上直接使用perl -pi -e '$ii = 0; s/something/"here".$ii++/e`进行自动增量修改(当然首先制作备份副本)。