正则表达式自动增量替换

标签 regex perl pcre auto-increment textwrangler

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

谢谢

例如,我的字符串应该是数字 1, 2, 3, 4, 5 但它们当前编号为 1, 1, 1, 1, 1 >

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

最佳答案

我不熟悉TextWrangler的语法;但是,它使用 pcre因此,只要您有办法为递增变量分配初始值(在本例中,我使用 $ii ),这应该就是您想要的...下面的脚本将任何出现的“pizza-x”替换为“披萨-0”,“披萨-1”...

@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 进行自动增量调整即可` 直接在文本文件上(当然,首先制作备份副本)。

关于正则表达式自动增量替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6259388/

相关文章:

regex - 在 Lua 中使用字符串模式获取一组括号内部和外部的字符串字符?

从 Windows cmd.exe 更改 Perl 目录

html - perl 子程序输出附加 "1"

PHP preg_split by new line with\R

javascript - 删除正则表达式末尾的额外空格?

java - 嵌套正则表达式是否有必要?

python - 将多个 ip 地址的列表解析为单个变量

perl - 这两个语句在 perl 中总是相同的吗?

php - preg_replace 带有/e修饰符的代码评估

php - 在小于和大于之间分割字符串