Emacs Lisp 正则表达式规范

特殊字符

. * + ? [ ^ $ \

例如:

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

特殊字符区间

[ 到之后第二个字符之后或第三个(第二个如果是 ^) 之后的] 之间的部分,叫做字符集(characters class).

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

在 [: 到 :] 之间的字符集。这个和 Perl 相同

和 Perl Regexp Expression 的区别:

如果学过 Perl 的正则表达式,许多概念是相同的,就不介绍了,就说说不同的地方:

  1. 分支结构是用 \|,而不是 |,也就是说 | 不是一个特殊字符,转义之后才是。

  2. 表示匹配数量的区间的分界符也需要转义: \{3,4\},所以,{ 也不是特殊字符。

  3. 括号也不是特殊字符,对于分组的括号要进行转义;

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

  4. 非捕获型括号的定义 \(?:...\)

  5. 强制分组名称 `(?:digit...)

可以连续定义相同的分组,最后返回最后捕获的一个分组

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

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

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

相关文章

一、校验数字的表达式 1 数字:^[0-9]*$ 2 n位的数字:^d{n}$ 3 至少n位的数字:^d{n,}$ 4 m-n位的数字...
正则表达式非常有用,查找、匹配、处理字符串、替换和转换字符串,输入输出等。下面整理一些常用的正则...
0. 注: 不同语言中的正则表达式实现都会有一些不同。下文中的代码示例除特别说明的外,都是使用JS中的...
 正则表达式是从信息中搜索特定的模式的一把瑞士军刀。它们是一个巨大的工具库,其中的一些功能经常...
一、校验数字的表达式 数字:^[0-9]*$ n位的数字:^\d{n}$ 至少n位的数字:^\d{n,}$ m-n位的数...
\ 将下一字符标记为特殊字符、文本、反向引用或八进制转义符。例如,“n”匹配字符“n”。“\n...