regex - Emacs:搜索和替换操作
问题描述
我正在寻找一种在进行操作的同时用 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 工作表的手动编辑中节省了一些时间,但我需要一种更有效、更简单的方法来做到这一点。
解决方案
$
我不知道在 之前是否应该总是有 a r
,所以要么:
M-x query-replace-regexp
RET \$r\([0-9]+\)
RET $r\,(1- \#1)
RET
或者:
M-x query-replace-regexp
RET r\([0-9]+\)
RET r\,(1- \#1)
RET
在哪里:
\,
计算替换中的 lisp 表达式,因此:\,(1- ...)
是对1-
函数的调用,带有参数:\#1
在此替换语法中,它将匹配的第 1 组表示为数字。
推荐阅读
- html - Angular 7+:将静态 html 文件注入组件视图的中间
- java - 如何实现,只有双击安卓手机中三个按钮中的任何一个才能退出应用程序?
- tsql - 在 TSql 中解析自定义标签
- xcode - GoogleService-Info.plist : 是否复制捆绑资源
- aws-lambda - 如何从另一个触发一个 AWS Lambda 函数,保证第二个只运行一次?
- javascript - 如何将此 Javascript 片段转换为 C#
- c# - .NET 核心 - 将连接字符串读入 Entity Framework Core
- java - appengine-maven-plugin:1.3.2:deploy 在部署到谷歌云期间失败
- google-cloud-platform - 使用 VM 进行健康检查
- netlogo - 平均邻居的变量以告知决策