我想在文件中找到与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-regexpx\([A-Z]\)z x\,(downcase \1)z
Marcel Levy.. 13
看起来Steve Yegge几年前已经发布了这个答案:"Shiny and New:Emacs 22." 向下滚动到"更换字符串中的更改大小写",您将看到他使用该replace-regexp
函数的示例代码.
一般的答案是你使用"\"来调用任何lisp表达式作为替换字符串的一部分,如\,(capitalize \1)
.阅读帮助文本,看起来它只是在交互模式下,但这似乎是最需要的地方.
看起来Steve Yegge几年前已经发布了这个答案:"Shiny and New:Emacs 22." 向下滚动到"更换字符串中的更改大小写",您将看到他使用该replace-regexp
函数的示例代码.
一般的答案是你使用"\"来调用任何lisp表达式作为替换字符串的一部分,如\,(capitalize \1)
.阅读帮助文本,看起来它只是在交互模式下,但这似乎是最需要的地方.