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 匹配文本的结束

正则表达式虽然普遍用于许多地方,但标准总有写差异。唉,学了一个学一个。。

相关文章
相关标签/搜索