我正在尝试在elisp中创建字符串\]
以便包含在正则表达式中。当我返回字符串\\]
时,我得到的是字符串\\]
,但是当我返回字符串\]
时,我得到的是字符串]
。这对我来说真的没有任何意义。下面是来自ielm的输出:
ELISP> "\\"
"\\"
ELISP> "\\]"
"\\]"
ELISP> "\]"
"]"
这里发生了什么?为什么第一个反斜杠没有转义第二个反斜杠?
"\\"
时,它会创建一个包含单个反斜杠字符的字符串,并以"\\"
形式打印。"\\["
时,它会创建一个包含反斜杠和方括号的字符串,并以"\\["
形式打印。"\["
时,反斜杠将转义方括号。这种转义是多余的,因为方括号不需要转义。因此,它创建的字符串与"["
相同:一个包含单个方括号字符的字符串。它以"["
形式打印,因为不需要转义方括号。(elisp) Syntax for Strings
(在Emacs Lisp手册中,使用g Syntax for Strings
)。永远记住:在Lisp字符串中,您需要将反斜杠的数量加倍。 - Drew