2017-08-15 56 views
2

當我學習GNU Emacs Lisp時,我對代碼非常困惑。奇怪的正則表達式字符串

(looking-back "\\s)" 1) 

我不知道\\s)代表什麼嗎?我知道它可以馬赫字符),我想知道匹配的字符串的規則。爲什麼不使用正則表達式?

回答

2

我不知道\\s)代表什麼嗎?我知道它可以馬赫字符),我想知道匹配的字符串的規則。

\s)比賽的一個發生字符與語法類「關閉括號」。

請參閱Elisp手冊,節點Syntax Class Table

開括號字符:(

關閉括號字符:在不同成對使用,環繞句子或 表達)

人物。這樣的分組開始於一個開括號 字符並終止。每個左括號 字符都匹配特定的右括號字符,反之亦然 。通常情況下,Emacs在插入右括號時會立即指示匹配的 左括號。 *注意 閃爍::。

在人類語言,並且在C代碼,括號對是()[],和{}。在Emacs Lisp中,列表和 矢量(()[])的分隔符被分類爲括號字符。

+0

要添加到上面的答案,在一個字符串中,'\'是一個特殊字符,所以需要轉義爲'\\'。所以在字符串處理之後,'\ s「'變成'\ s'這是對正則表達式的Emacs擴展,以處理解析編程語言(用於語法突出顯示等)中經常遇到的情況。 [markdown在某些情況下也需要特殊處理]' – JSON

+0

Emacs Lisp將「\\ s」傳遞給C程序以匹配字符串?謝謝,我明白了。 –