Emacs 用增量序列替换正则表达式

Cge*_*629 2 regex emacs text-editor

我正在尝试找出一种方法,将文本文件中的字符串替换为增量超过 1 的数字。我正在尝试将几行代码转换为如下所示:

result_A_in_S1-S2.txt
result_A_in_S1-S2.txt
result_A_in_S1-S2.txt
result_A_in_S1-S2.txt
Run Code Online (Sandbox Code Playgroud)

变成按顺序按比例放大S1和的东西S2

result_A_in_1000-1003.txt
result_A_in_1004-1007.txt
result_A_in_1008-1011.txt
result_A_in_1012-1015.txt
Run Code Online (Sandbox Code Playgroud)

我想知道是否可以使用替换正则表达式定义一个字符串,然后将该字符串替换为某个起始数字,并且当它找到下一个出现的字符串时,它会替换为起始数字+所选增量。

我刚刚开始学习Emacs,对它还很陌生。

phi*_*ils 5

是的,您可以使用 Emacs 中的 [query-]replace-regexp 来完成此操作,方法是评估替换中的 elisp,并利用从零开始的替换计数器\#。例如:

M-x query-regexp-replace RET S1-S2 RET
\,(let ((start (+ 1000 (* 4 \#)))) (format "%d-%d" start (+ start 3))) RET