常用正则表达式速查表
元字符(配匹字符串用)
字符 | 补集(相反的) | |
. | 除换行符(\n)以外的任意字符 | \n(换行) |
\w | 单词字符 (指大小写字母、0-9的数字、下划线、汉字) | \W |
\d | 数字(0-9) | \D(非数字) |
\s | 空白字符(空白字符,包括换行符\n、回车符\r、制表符\t、垂直制表符\v、换页符\f) | \S |
.* | 匹配任意文本,不包括回车(\n)? | |
[内容] | 匹配括号内的列出的字符| | [^内容] (匹配非[]内所列出的字符) |
定位字符
表达式 | 说明 | 相反的 |
^ | 表示待匹配串的开始位置(如:acute 可以用^ac),在[]内为非 | |
$ | 表示待匹配串的结束位置 (如:acute 可以用te$) | |
\b | 单词的边界 (可以替换"^""$"使用 如 \bac 或 te\b) | \B 义不在首位与未尾 (如acute \Bcu 与ut\ |
重复描述字符
表达式 | 说明 | 示例 |
{n} | 前面的字符n次 | aabbbcccc a{2} 结果:aa |
{n,} | 前面的字符n次或以上 | aabbbcccc b{2,} 结果:bbb b{4,} 无结果 |
{n,m} | 前面的字符n-m次 | aabbbcccc b{2,3} 结果:bbb , b{4,5} 无结果 |
? | 前面的字符0-1次 | aabbbcccc aaa?bb 结果:aabb (即可能存在的意思) |
+ | 前面的字符1或以上 | aabbbcccc c+ 结果:cccc (一定存在1次,或以上) |
* | 前面的字符0或以上 | aabbbcccc a* 结果aa c*结果cccc (匹配多个字符,字符量大时不适用) |
负向零宽断言
表达式 | 说明 | 示例 |
(?=内容) | 断言自身出现的位置的后面能匹配表达式exp | I'm singing while you're dancing 表达式:\b\w+(?=ing\b) 结果:sing danc |
(?<=内容) | 断言自身出现的位置的前面能匹配表达式exp | reading a book 表达式:(?<=\bre)\w+\b 结果:ading |
特殊配匹字符
符号 | 说明 | 示例 |
| | 逻辑"或" | aabbbcccc c+|a+ 结果:aa cccc |
\ | 转义符 | \用于转换做用 |
\r | 回车符 | |
\n | 换行符 | |
\v | 竖向制表符 | |
\f | 换页符 | |
\t | 制表符,Tab | |
\b | 通常是单词分界位置,但如果在字符类里使用代表退格 | |
\e | Escape | |
\a | 报警字符(打印它的效果是电脑嘀一声) | |
\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 | 逻辑与IF...the..else..相同意义 |
(?(exp)yes) | 同上,只是使用空表达式作为no | 逻辑IF...the.. |
(?(name)yes|no) | 如果命名为name的组捕获到了内容,使用yes作为表达式;否则使用no | |
(?(name)yes) | 同上,只是使用空表达式作为no | |