正则表达式参考
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 |

