Emacs:如何在defun中用lisp函数替换正则表达式?
|
例如,我想在所有括号内加上(),UPCASE。交互执行以下操作很简单:
M-x query-replace-regexp
replace: \"(\\(.+?\\))\"
with : \"(\\,(upcase \\1))\"
相反,我想写一个defun
来做到这一点:
(defun upcs ()
(interactive)
(goto-char 1)
(while (search-forward \"(\\\\(.+?\\\\))\" nil t) (replace-match \"(\\\\,(upcase \\\\1))\" t nil)))
但这不起作用!尽管有以下工作(将“ 3”和“ 4”追加到括号内的文本之后):
(defun HOOK ()
(interactive)
(goto-char 1)
(while (search-forward-regexp \"(\\\\(.+?\\\\))\" nil t) (replace-match \"(foo \\\\1 bar)\" t nil)))
没有找到相关结果
已邀请:
4 个回复
悲帽慑彤电
细屠截殴些
。 其次,虽然此代码可作为
的替换值有效,但我认为您不能将其传递给
:
您可以使用
函数获得
找到的匹配值。 最后,我不确定您的搜索正则表达式是否正确。 我认为您需要遵循以下原则:
担每棱绰
感谢BillC和Luke Girvin的帮助。
系漏
(这不起作用,但是使用了在交互模式下起作用的正则表达式) 对此:
在内部引号之前,我需要三个反斜杠。