Kev*_*ghe 24 regex emacs elisp
我一直在玩emacs lisp,我想编写一个小函数来进行正则表达式搜索和替换.我有一段时间让正则表达式正常工作,因为我没有意识到在编写lisp代码时需要对所有特殊字符进行双重转义(但在交互式使用query-replace-regexp时则不行!).
因此,例如,交互式使用query-replace-regexp即可使用
^\(.*\)[\t]-.*$
Run Code Online (Sandbox Code Playgroud)
但是在编写elisp代码时,你需要双重转义所有内容:
^\\(.*\\)[\t]-.*$
Run Code Online (Sandbox Code Playgroud)
我终于在Steve Yegge的文章中找到了对此的引用,但我想知道是否有人知道这是为什么?
sco*_*zer 22
这是因为你需要在字符串中转义反斜杠.如果你没有逃避\(字符串中的反斜杠,那么结果就是这样(
Tre*_*son 18
您已经有了答案,但是在Emacs中创建正则表达式的内置助手是重新构建的.
M-x re-builder
Run Code Online (Sandbox Code Playgroud)
FWIW,emacs-lisp-mode会为特殊的表达形式(就像
你\\(和\\)你一样).然后你可以将面部变成一个突出的东西.
(他们是font-lock-regexp-grouping-construct和font-lock-regexp-grouping-backslash)
| 归档时间: |
|
| 查看次数: |
4025 次 |
| 最近记录: |