. * + ? [ ^ $ \
例如:git
(string-match "^abc.e*?[0-9]$" "abcdefg6") => t
在 [
到以後第二個字符以後或第三個(第二個若是是 ^
) 以後的]
之間的部分,叫作字符集(characters class).正則表達式
`[[a]` 匹配 `[` 或 `a`
在 [: 到 :] 之間的字符集。這個和 Perl 相同code
若是學過 Perl 的正則表達式,許多概念是相同的,就不介紹了,就說說不一樣的地方:string
分支結構是用 \|
, 而不是 |
, 也就是說 |
不是一個特殊字符,轉義以後纔是。it
表示匹配數量的區間的分界符也須要轉義: \{3, 4\}
, 因此,{
也不是特殊字符。io
括號也不是特殊字符,對於分組的括號要進行轉義;class
(string-match "(\w+)::\1" "abc:def") => tdi
非捕獲型括號的定義 \(?:...\)
字符集
強制分組名稱 `(?:digit...)co
能夠連續定義相同的分組,最後返回最後捕獲的一個分組
\(?:2\w+\)::\(?:2\w+\)
\` == \A 匹配文本的開始
' == \z 匹配文本的結束
正則表達式雖然普遍用於許多地方,但標準總有寫差異。唉,學了一個學一個。。