正则表达式:PCRE 中是否有用于增加数字的字符?

正则表达式:PCRE 中是否有用于增加数字的字符?

我正在使用兼容 PCRE 的文件重命名程序。我是否可以在程序的“替换”字段中输入字符或模式来告诉它在文件名末尾附加数字,并且每个新文件的数字都应该增加?

这是我即时制作的一个例子。

doc1 - Kopia (2) - Kopia.txt
doc1 - Kopia (2) - Kopia_2.txt
doc1 - Kopia (2).txt
doc1 - Kopia (2)_2.txt
doc1 - Kopia (3).txt
doc1 - Kopia (3)_2.txt
doc1 - Kopia - Kopia (2).txt
doc1 - Kopia - Kopia (2)_2.txt
doc1 - Kopia - Kopia - Kopia.txt
doc1 - Kopia - Kopia - Kopia_2.txt
doc1 - Kopia - Kopia.txt
doc1 - Kopia - Kopia_2.txt
doc1 - Kopia.txt
doc1 - Kopia_2.txt
doc1.txt
doc1_2.txt

我想保留开头的“doc”,也想保留文件扩展名。程序有一个复选标记,可以启用或禁用扩展名处理。所以如果我不选中它,我就不必担心这个问题。我希望每个文件的“doc”后面的数字都增加,因为我不允许在同一个文件夹中有多个同名的文件。

所以最终结果应该是这样的。

doc1.txt
doc2.txt
doc3.txt
etc... you get the idea

我仅使用.*“匹配”模式。我认为“替换”模式应该是这样的,doc{n}但我不知道应该输入什么来代替{n}。有没有类似的简单模式可以在这里使用?

答案1

不,没有正则表达式构造来解决这个问题。正则表达式只做一件事:匹配模式并允许您引用捕获的模式。您要求的功能需要增加变量,因此将进入编程语言领域。这样的功能超出了正则表达式的范围。

如果您的程序支持在匹配过程中评估任意代码,那么s/foo/1+2/使用类似替换的操作可能可以做到这一点,但这不是正则表达式的功能。foo3

相关内容