在notepad ++或Visual Studio编辑器中使用正则表达式可以将多行替换为自动递增数吗?

时间:2013-04-11 03:43:13

标签: regex notepad++

例如,改变以下(多行):

hello-a
hello-b
hello-c
hello-d

hello-1
hello-2
hello-3
hello-4

我只是找到正则表达式“hello- [a-zA-Z] *”来匹配“hello-?”,但找不到替代品将它们替换为自动添加的数字。

1 个答案:

答案 0 :(得分:2)

我还不确定 Notepad++ ,但 Textpad ,您使用:

\i(n)    -or-
\i(n,)   -or-
\i(n,m)

在您的情况下 \i(1) 或仅 \i

另外,在示例正则表达式中,您提供了:
hello-[a-zA-Z]*

它会匹配(正如你所提到的):

hello-a
hello-b
hello-c
hello-d

但它也会匹配“hello-a ... a”(“hello-”后跟一个或多个alpha):

hello-aa
hello-abc
hello-tuvwxyz

并且它也匹配“hello-”(后面没有任何内容或后面跟着非alpha):

hello-
hello-#
hello-1

所以,如果这是你想要的那样,正则表达式搜索将是:

(hello-)[a-zA-Z]*

如果你想匹配“hello-”只跟一个alpha,那么正则表达式搜索将是:

(hello-)[a-zA-Z]

如果你想匹配“hello-”后跟一个或多个alpha,正则表达式搜索将是:

(hello-)[a-zA-Z]+

对于所有这些,正则表达式替换将是:

\1\i(1)


<小时/>
基本语法是:

\i[(n[,m])]

n是起点,m是增量。

\i(100,5) --> 100,105,110...

如果未指定括号(\ i本身),则与\ i(1)或\ i(1,1)

相同
\i --> 1,2,3...

如果指定了括号......

如果省略n,则n默认为0.

\i(,1) --> 0,1,2...
\i(,100) --> 100,200,300...

如果省略“,m”,则默认为1。

\i(1) --> 1,2,3...
\i(101) --> 101,102,103...

如果省略n和m [\ i()本身],则与\ i(0)或\ i(0,1)

相同
\i() --> 0,1,2...

注意:为了使 \i 正常工作,您必须在整个文档(或整个选择)上 Replace all

没有 ending 参数。 \i 将继续增加替换,直到所有匹配都被替换为止。

<小时/>
Notepad++

似乎不支持此功能