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)。希望你的回答在這種情況下有所幫助。 –