当前位置:  开发笔记 > 开发工具 > 正文

Emacs查询替换文本转换

如何解决《Emacs查询替换文本转换》经验,为你挑选了1个好方法。

我想在文件中找到与t [A-Z]u形式的正则表达式匹配的任何文本(即匹配t后跟大写字母和另一个匹配u,并转换匹配的文本以使大写字母为小写.例如,为正则表达式x[A-Z]y

xAy

xay

xZy

xzy

Emacs的query-replace功能允许反向引用,但AFAIK不是匹配文本的转换.是否有内置功能可以做到这一点?有没有人有我可以使用的简短Elisp功能?

UPDATE

@Marcel Levy有它:\,在替换表达式中引入了(任意?)Elisp表达式.例如,上面的解决方案是

M-x replace-regexp  x\([A-Z]\)z  x\,(downcase \1)z

Marcel Levy.. 13

看起来Steve Yegge几年前已经发布了这个答案:"Shiny and New:Emacs 22." 向下滚动到"更换字符串中的更改大小写",您将看到他使用该replace-regexp函数的示例代码.

一般的答案是你使用"\"来调用任何lisp表达式作为替换字符串的一部分,如\,(capitalize \1).阅读帮助文本,看起来它只是在交互模式下,但这似乎是最需要的地方.



1> Marcel Levy..:

看起来Steve Yegge几年前已经发布了这个答案:"Shiny and New:Emacs 22." 向下滚动到"更换字符串中的更改大小写",您将看到他使用该replace-regexp函数的示例代码.

一般的答案是你使用"\"来调用任何lisp表达式作为替换字符串的一部分,如\,(capitalize \1).阅读帮助文本,看起来它只是在交互模式下,但这似乎是最需要的地方.

推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有