. * + ? [ ^ $ \
例如: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 匹配文本的结束
正则表达式虽然普遍用于许多地方,但标准总有写差异。唉,学了一个学一个。。