Emacs Lisp 正則表達式規範

特殊字符

. * + ? [ ^ $ \

例如:git

(string-match "^abc.e*?[0-9]$"  "abcdefg6") => t

特殊字符區間

[ 到以後第二個字符以後或第三個(第二個若是是 ^) 以後的] 之間的部分,叫作字符集(characters class).正則表達式

`[[a]` 匹配 `[` 或 `a`

在 [: 到 :] 之間的字符集。這個和 Perl 相同code

和 Perl Regexp Expression 的區別:

若是學過 Perl 的正則表達式,許多概念是相同的,就不介紹了,就說說不一樣的地方:string

  1. 分支結構是用 \| , 而不是 |, 也就是說 | 不是一個特殊字符,轉義以後纔是。it

  2. 表示匹配數量的區間的分界符也須要轉義: \{3, 4\}, 因此,{ 也不是特殊字符。io

  3. 括號也不是特殊字符,對於分組的括號要進行轉義;class

    (string-match "(\w+)::\1" "abc:def") => tdi

  4. 非捕獲型括號的定義 \(?:...\)字符集

  5. 強制分組名稱 `(?:digit...)co

能夠連續定義相同的分組,最後返回最後捕獲的一個分組

\(?:2\w+\)::\(?:2\w+\)
  1. \` == \A 匹配文本的開始

  2. ' == \z 匹配文本的結束

正則表達式雖然普遍用於許多地方,但標準總有寫差異。唉,學了一個學一個。。

相關文章
相關標籤/搜索