我一直在玩emacs lisp,我想写一个小函数来进行正则表达式搜索和替换。我花了很长时间让正则表达式正常工作,因为我没有意识到在编写 lisp 代码时所有特殊字符都需要双重转义(但在交互式使用 query-replace-regexp 时不需要!)。
因此,例如,交互式地使用 query-replace-regexp 您可以使用
^\(.*\)[\t]-.*$
但是在编写 elisp 代码时,您需要像这样对所有内容进行双重转义:
^\\(.*\\)[\t]-.*$
我终于在 Steve Yegge 的一篇文章中找到了对此的参考,但我想知道是否有人知道这是为什么?