Regex Emacs查询替换为文本转换

Regex Emacs查询替换为文本转换,regex,emacs,Regex,Emacs,我希望在文件中找到与格式为t[a-Z]u的regexp匹配的任何文本(即,匹配的t后跟一个大写字母和另一个匹配的u),并将匹配的文本转换为小写。例如,对于regexpx[a-Z]y xAy 变成 xay xzy 及 变成 xay xzy Emacs的query replace函数允许反向引用,但不允许对匹配的文本进行转换。是否有内置函数可以执行此操作?是否有人可以使用短Elisp函数 更新 @Marcel Levy说:\,在替换表达式中引入了一个(任意的?)Elisp表达式 M-x r

我希望在文件中找到与格式为t
[a-Z]
u的regexp匹配的任何文本(即,匹配的t后跟一个大写字母和另一个匹配的u),并将匹配的文本转换为小写。例如,对于regexp
x[a-Z]y

xAy
变成

xay
xzy

变成

xay
xzy
Emacs的
query replace
函数允许反向引用,但不允许对匹配的文本进行转换。是否有内置函数可以执行此操作?是否有人可以使用短Elisp函数

更新

@Marcel Levy说:
\,
在替换表达式中引入了一个(任意的?)Elisp表达式

M-x replace-regexp <RET> x\([A-Z]\)z <RET> x\,(downcase \1)z
M-x替换regexp x\([A-Z]\)Z x\,(downcase\1)Z
几年前似乎已经发布了这个问题的答案:向下滚动到“在替换字符串中更改大小写”,您将看到他使用
replace regexp
函数的示例代码


一般的答案是使用“\,”调用任何lisp表达式作为替换字符串的一部分,如
\,(大写\1)
。阅读帮助文本时,它看起来只是处于交互模式,但这似乎是最有必要的地方。

在这种情况下,qrr的另一种选择是录制宏并重放它。(isearch forward regexp,选择字符,downcase region。)我发现运行中的宏更容易,因为如果您的regexp出错,您会立即得到反馈。

我也会使用宏来执行此操作,但这只是因为从正则表达式的替换字符串中执行代码对我来说非常不直观。如果您正在编写批处理脚本或需要快速运行的东西,\,这肯定是去吧