使用正则表达式插入序列号

时间:2018-02-06 11:58:02

标签: regex replace sequences

假设:

pad_
pad_
pad_

如何使用正则表达式作为" for循环"获得:

pad_1
pad_2
pad_3

我知道可以在替换表达式中使用诸如\1\2之类的编号序列来指示现有文本中的()捕获,但是单个替换表达式可以生成其自己的替换值作为数字序列?除了保持一个包含我可以复制/粘贴的数字序列的文本文件,或编写一个使用" for循环输出文本的快速应用程序之外,还有某种技巧可以实现这一点吗?

结论:我的印象是正则表达式语法不是文本编辑应用程序统一实现的标准,也不包含任何符合在替换表达式中使用匹配计数或启动的目的的内容替换文本序列。不幸的是,这意味着我需要使用像vim这样的文本编辑器,这些编辑器可以用于不适合它们的目的,或者尝试为我将要使用的文本编辑器或IDE查找或制作应用程序插件。但实际上编译和运行一个快速的循环"实际上要简单得多。打印字符串供我复制/粘贴,我可以通过改变方式重复使用,或使用建议的awk

2 个答案:

答案 0 :(得分:3)

如果perl没问题,我想awk也可以:

awk '$0=$0 NR' file

我没有notepad ++,但这对vim来说很容易。

vim编辑器的一种方式

  • %s/$/0/这会将0附加到每一行
  • 选择所有行,您可以ggVG
  • 让数字增长:gCtrl-A

看起来像:

enter image description here

使用vim编辑器的另一种方式

  • 视觉选择(例如V)您想要追加的行seq
  • :'<,'>s/$/\=line('.')-line("'<")+1当您按:时,'<,'>范围将自动填充
  • 按Enter键,完成。

enter image description here

答案 1 :(得分:0)

TextPad https://textpad.com/index.html

TextPad将执行此操作。它具有一个内置功能,可以增加一个计数器\ i

\ i从1开始并以1递增

\ i(100)从100开始并以1递增

\ i(100,10)从100开始并以10递增

Example regular expression