我正在尝试在elisp中创建字符串\]
以包含在正则表达式中。当我返回字符串\\]
时,我得到字符串\\]
,但是当我返回字符串\]
时,我得到字符串]
。这对我来说没有任何意义。这是ielm的输出:
ELISP> "\\"
"\\"
ELISP> "\\]"
"\\]"
ELISP> "\]"
"]"
这里发生了什么。为什么不是第一个反斜杠逃脱第二个?
答案 0 :(得分:5)
您缺少的是字符串的打印方式与您输入字符串的方式相同。因此,如果字符串包含需要转义的字符,则会在其前打印反斜杠。但如果它包含一个不需要转义的字符,则不会打印出一个字符。
当您键入"\\"
时,它会创建一个包含单个反斜杠字符的字符串。这将打印为"\\"
。
当您键入"\\["
时,它会创建一个包含两个字符的字符串:反斜杠后跟方括号。这将打印为"\\["
。
当您键入"\["
时,反斜杠会转义方括号。这种转义是多余的,因为方括号不需要转义。因此它创建与"["
相同的字符串:包含单个方括号字符的字符串。这将打印为"["
,因为不需要转义方括号。