3
指示字符串开头和结尾的字符是什么?我正在写一个装饰功能:Emacs正则表达式中字符串的开始和结尾
(defun trim (str)
(if (string-match "^[[:space:]]*\\(.+?\\)[[:space:]]*$" str)
(match-string 1 str)
str))
但随着像“第一/ n下一个”(从shell-command-to-string
有)的字符串返回只有“第一”。参考手册中说:
当匹配字符串而不是缓冲区时,'^'匹配 字符串的开头或换行符后面。
\\'
而左边的一个用于缓冲区的开始/结束,所以它只是简单地从字符串中返回任何内容。因此,如果可能,如何指示字符串的“绝对”开始?
感谢您的纠正。然而,'\\'[[:space:]] * \\(。+?\\)[[:space:]] * \\''(在开始时使用“\\”)返回原始字符串,不要在开始和结束时切断'\ n's。 –
问题不在于锚点,而在于您的正则表达式。 [:space:]与换行符不匹配。我会修改我的答案。 –
“'[:space:]'它匹配任何具有空白语法的字符(请参阅语法类表)。” (http://www.gnu.org/software/emacs/elisp/html_node/Char-Classes.html)。 “语法类:空白字符...在几乎所有主要模式中,空格,制表符,换行符和换页符都被分类为空格。” (http://www.gnu.org/software/emacs/manual/html_mono/elisp.html#Syntax-Class-Table)。希望你的回答在这种情况下有所帮助。 –