正则表达式参考

1. 常用的元字符

代码 说明
. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线或汉字
\s 匹配任意的空白符
\d 匹配数字
\b 匹配单词的开始或结束
^ 匹配字符串的开始
$ 匹配字符串的结束

2. 常用的限定符

代码/语法 说明
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复 n 次
{n,} 重复 n 次或更多次
{n,m} 重复 n 到 m 次

3. 常用的反义代码

代码/语法 说明
\W 匹配任意不是字母,数字,下划线,汉字的字符
\S 匹配任意不是空白符的字符
\D 匹配任意非数字的字符
\B 匹配不是单词开头或结束的位置
[^x] 匹配除了 x 以外的任意字符
[^aeiou] 匹配除了 aeiou 这几个字母以外的任意字符

4. 常用分组语法

分类 代码/语法 说明
捕获 (exp) 匹配exp,并捕获文本到自动命名的组里
(?<name>exp) 匹配 exp, 并捕获文本到名称为 name 的组里,也可以写成 (?’name’exp)
(?:exp) 匹配 exp,不捕获匹配的文本,也不给此分组分配组号
零宽断言 (?=exp) 匹配 exp 前面的位置
(?<=exp) 匹配 exp 后面的位置
(?!exp) 匹配后面跟的不是 exp 的位置
(?<!exp) 匹配前面不是 exp 的位置
注释 (?#comment) 这种类型的分组不对正则表达式的处理产生任何影响,用于提供注释让人阅读

5. 懒惰限定符

代码/语法 说明
*? 重复任意次,但尽可能少重复
+? 重复 1 次或更多次,但尽可能少重复
?? 重复 0 次或 1 次,但尽可能少重复
{n,m}? 重复 n 到 m 次,但尽可能少重复
{n,}? 重复 n 次以上,但尽可能少重复

6. 其他语法

代码/语法 说明
\a 报警字符 (打印它的效果是电脑嘀一声)
\b 通常是单词分界位置,但如果在字符类里使用代表退格
\t 制表符,Tab
\r 回车
\v 竖向制表符
\f 换页符
\n 换行符
\e Escape
\0nn ASCII 代码中八进制代码为 nn 的字符
\xnn ASCII 代码中十六进制代码为 nn 的字符
\unnnn Unicode 代码中十六进制代码为 nnnn 的字符
\cN ASCII 控制字符。比如 \cC 代表 Ctrl+C
\A 字符串开头 (类似 ^,但不受处理多行选项的影响)
\Z 字符串结尾或行尾 (不受处理多行选项的影响)
\z 字符串结尾 (类似 $,但不受处理多行选项的影响)
\G 当前搜索的开头
\p{name} Unicode 中命名为 name 的字符类,例如 \p{IsGreek}
(?>exp) 贪婪子表达式
(?<x>-<y>exp) 平衡组
(?im-nsx:exp) 在子表达式 exp 中改变处理选项
(?im-nsx) 为表达式后面的部分改变处理选项
(?(exp)yes|no) 把 exp 当作零宽正向先行断言,如果在这个位置能匹配,使用 yes 作为此组的表达式;否则使用 no
(?(exp)yes) 同上,只是使用空表达式作为 no
(?(name)yes|no) 如果命名为 name 的组捕获到了内容,使用 yes 作为表达式;否则使用 no
(?(name)yes) 同上,只是使用空表达式作为 no
作者

l0neman

发布于

2020-06-05

更新于

2020-06-05

许可协议

评论