2

在邪恶模式下使用 Emacs,我遇到了包含 的正则表达式的问题\_,例如

/TAG1\_.\{-}TAG2
/TAG1\_s*TAG2

例如,第一个正则表达式在 Vim 中用于查找TAG1和之间的任何文本块TAG2,包括空格和换行符。它将匹配例如

TAG1
text

more text TAG2

然而,在 Emacs evil-mode 中,只要我输入\_,我就会收到一条Premature end of regular expression错误消息。其他不带\_, as

/TAG1\n*TAG2

按预期工作,所以问题出在\_. 我尝试过使用邪恶组设置,但无济于事。任何提示问题可能出在哪里?

PS:无论我是否使用GUI,都会出现此问题。在 Vim 我没有遇到任何问题

4

2 回答 2

3

这不是 evil 模式的问题,在 emacs 中正则表达式\有特殊的含义。来自emacs手册

\ 有两个功能:它引用特殊字符(包括'\'),并引入额外的特殊结构。

因为'\'引用了特殊字符,'\$'是只匹配'$'的正则表达式,'['是只匹配'['的正则表达式,以此类推。

您将不得不转义\,因此要搜索TAG\您需要输入正则表达式TAG\\

您可能会发现页面对学习 elisp 正则表达式很有用。

于 2014-02-18T19:46:16.030 回答
1

如果,正如您在回复@Iqbal 时所说,您尝试匹配TAG1,后跟零个或多个空格字符或换行符,然后是TAG2,那么在 Emacs 中,正则表达式是这样编写的: TAG1[ \n]*TAG2

是的,您应该自己阅读手册的正则表达式部分。不同的语言处理正则表达式的方式不同,Emacs Lisp 也不例外。

于 2014-02-19T03:15:08.687 回答