Emacs:搜索和替换操作

时间:2018-12-07 10:07:01

标签: regex emacs operation

我正在寻找一种在执行操作的同时用Emacs搜索和替换正则表达式的方法。我真的不知道如何解释它,但这是一个例子:

让我说这段代码要进行200多行:

"lq.u $r40r41 = 0[$r39]\n"
"addd $r14r15 = $r14$r15, $r40$r41\n"
";;\n"              
"lq.u $r42r43 = 16[$r39]\n"             
"addd $r16r17 = $r16$r17, $r42$r43\n"
";;\n"    

我在选择寄存器时犯了一个错误,因此我想将它们更改为:

"load $r39r40 = 0[$r39]\n"
"add $r13r14 = $r13$r14, $r39$r40\n"
";;\n"              
"load $r41r42 = 16[$r39]\n"             
"addd $r15r16 = $r15$r16, $r41$r42\n"
";;\n"  

因此,基本上,我想要的是一种正则表达式搜索2位数字“ XX”并将其替换为“ XX-1”的方法。有没有办法通过Emacs做到这一点?

我设法节省了使用Excel工作表进行手动编辑的时间,但我需要一种更高效,更省力的方法。

1 个答案:

答案 0 :(得分:1)

我无法判断在$之前是否应该总是有r,所以要么:

Mx query-replace-regexp RET \$r\([0-9]+\) RET $r\,(1- \#1) RET

或:

Mx query-replace-regexp RET r\([0-9]+\) RET r\,(1- \#1) RET

位置:

  • \,评估替换中的lisp表达式,因此:
  • \,(1- ...)是对1-函数的调用,其参数为:
  • \#1,使用此替换语法,将匹配的第1组表示为数字。