【问题标题】:Escaping backslash In elisp在elisp中转义反斜杠
【发布时间】:2013-02-05 06:35:48
【问题描述】:

我正在尝试在 elisp 中创建字符串 \] 以包含在正则表达式中。当我返回字符串\\] 时,我得到字符串\\],但是当我返回字符串\] 时,我得到字符串]。这对我来说真的没有任何意义。这是 ielm 的输出:

ELISP> "\\"
"\\"
ELISP> "\\]"
"\\]"
ELISP> "\]"
"]"

这里发生了什么。为什么第一个反斜杠没有转义第二个?

【问题讨论】:

  • 不明白这个问题。最后一个例子中只有一个反斜杠,即“第二个”?

标签: string escaping elisp


【解决方案1】:

您缺少的是字符串的打印方式与您键入它们的方式相同。因此,如果字符串包含需要转义的字符,则会在其前面打印反斜杠。但如果它包含不需要转义的字符,则不会打印。

当您键入"\\" 时,它会创建一个包含单个反斜杠字符的字符串。这将打印为"\\"

当您键入"\\[" 时,它会创建一个包含两个字符的字符串:反斜杠后跟方括号。这将打印为"\\["

当您键入"\[" 时,反斜杠会转义方括号。这种转义是多余的,因为方括号不需要转义。因此它创建了与"[" 相同的字符串:一个包含单个方括号字符的字符串。这将打印为"[",因为不需要转义方括号。

【讨论】:

  • 我会添加这个:见(elisp) Syntax for Strings(在Emacs Lisp手册中,使用g Syntax for Strings)。永远记住:在 Lisp 字符串中,将所需的反斜杠数量加倍。
猜你喜欢
  • 2013-11-10
  • 1970-01-01
  • 2015-05-19
  • 2015-09-21
  • 2011-11-09
  • 2017-04-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多