假设你有一些文字内容如下:
"foo" ... "bar" ... "file" ... "emacs"
并且您要做的就是替换“with”。我知道只需要进行以下替换即可:
" -> ''
但是假设您希望以交互方式和正则表达式进行,对于更复杂的情况,如何才能完成?
我更好地解释自己:我希望我能有一个命令或一系列命令以这种方式工作:
"\\(.*?\\)"
这样的正则表达式并以交互方式查看结果(即,当您编辑正则表达式时,当前可见的匹配会突出显示,并且在您进行更改时始终会更新突出显示。)' '\1' '
答案 0 :(得分:20)
最后我发现了!!!!! 这些是要遵循的步骤:
M-x isearch-forward-regexp
以交互方式插入正则表达式。如果您犯了错误,可以使用DEL或M-e并浏览正则表达式进行更正。
然后在找到你想要的东西后立即按下M-%并替换你喜欢并开始更换。
因此,您可以以完全交互式和增量方式搜索和替换正则表达式。
答案 1 :(得分:7)
命令query-replace-regexp
是否满足您的要求?在大多数Emacs安装中,它将绑定到C-M-%
。
由于这不符合OP的要求,建议同时查看re-builder
。此功能未在Emacs手册或帮助系统中记录,只是在Emacs Lisp manual中记录。
答案 2 :(得分:7)
运行M-x isearch-forward-regexp
或C-M-s
。
当您开始输入正则表达式时,第一次出现将立即突出显示。尝试使用光标返回正则表达式将取消搜索,因此如果您犯了错误,应使用M-e
进行编辑,进行更改,然后按Enter键继续搜索。
如果您对正则表达式感到满意,请按M-%
,键入替换字符串(或使用向上键访问以前使用的替换字符串),然后按RET
开始交互更换。
对于每次出现,请按y
替换一次,n
跳过,!
替换全部,RET
退出,或{{1}查看更多选项。
要重复上一次正则表达式搜索,请先输入?
,然后C-M-s
。
完整详情位于manual page。