1 字符
| 语法 | 说明 |
|---|---|
| . | 任意字符,在单行模式(s标志)下,也可以匹配换行 |
| [xyz] | 字符类 |
| [^xyz] | 否定字符类 |
| \d | Perl 字符类 |
| \D | 否定 Perl 字符类 |
| [[:alpha:]] | ASCII 字符类 |
| [[:^alpha:]] | 否定 ASCII 字符类 |
| \pN | Unicode 字符类 (one-letter name) |
| \p{Greek} | Unicode 字符类 |
| \PN | 否定 Unicode 字符类 (one-letter name) |
| \P{Greek} | 否定 Unicode 字符类 |
参考以下附录,获取具体字符类的内容:
2 组合
| 语法 | 说明 |
|---|---|
| xy | xy(x 后跟随 y) |
| x|y | x 或 y (优先匹配 x) |
3 重复次数
| 语法 | 说明 |
|---|---|
| x* | 零个或多个 x,贪婪 |
| x+ | 一个或多个 x,贪婪 |
| x? | 零个或一个 x,贪婪 |
| x{n,m} | n 到 m 个 x,贪婪 |
| x{n,} | n 个或多个 x,贪婪 |
| x{n} | n 个 x |
| x*? | 零个或多个 x,非贪婪 |
| x+? | 一个或多个 x,非贪婪 |
| x?? | 零个或一个 x,非贪婪 |
| x{n,m}? | n 到 m 个 x,非贪婪 |
| x{n,}? | n 个或多个 x,非贪婪 |
| x{n}? | n 个 x |
4 分组子模式
| 语法 | 说明 |
|---|---|
| (re) | 编号捕获组(子匹配) |
| (?P<name>re) | 命名编号捕获组(子匹配) |
| (?:re) | 非捕获组(子匹配) |
| (?flags) | 设置标记对组后表达式生效,非捕获 |
| (?flags:re) | 组内设置标记,非捕获 |
标志语法是:
| 语法 | 说明 |
|---|---|
| xyz | 设置 |
| -xyz | 清除 |
| xy-z | 设置 xy,清除 z |
支持的标志:
| 语法 | 说明 |
|---|---|
| i | 大小写不敏感,(默认 false) |
| m | 多行模式: ^ 和 $ 匹配行开始和结束而不是匹配文本的开头和结尾(默认 false) |
| s | 令 . 匹配 \n (默认 false) |
| U | 非贪婪:交换 x* 和 x*? 的意义,x+ 和 x+?,等 (默认 false) |
5 位置(零宽字符)
| 语法 | 说明 |
|---|---|
| ^ | 设置标记 m 则匹配行首,否则匹配整个文本的开头(m 默认为 false) |
| $ | 设置标记 m 则匹配行尾,否则匹配整个文本的结尾(m 默认为 false) |
| \A | 整个文本的开头,忽略 m 标记 |
| \b | 单词边界 |
| \B | 非单词边界 |
| \z | 整个文本的结尾,忽略 m 标记 |
6 转义字符类
| 语法 | 说明 |
|---|---|
| \a | 响铃符 (相当于 \x07) |
| \f | 换页符 (相当于 \x0C) |
| \t | 横向制表符(相当于 \x09) |
| \n | 换行符 (相当于 \x0A) |
| \r | 回车符 (相当于 \x0D) |
| \v | 纵向制表符(相当于 \x0B) |
| \123 | 8 進制编码所代表的字符(必须是 3 位数字) |
| \x7F | 16 進制编码所代表的字符(必须是 3 位数字) |
| \x{10FFFF} | 16 進制编码所代表的字符(最大值 10FFFF ) |
| \Q…\E | \Q 和 \E 之间的文本,忽略文本中的正则语法 |
| \\ | \ |
| \^ | ^ |
| \$ | $ |
| \. | . |
| \* | * |
| \+ | + |
| \? | ? |
| \{ | { |
| \} | } |
| \( | ( |
| \) | ) |
| \[ | [ |
| \] | ] |
| \| | | |
7 命名字符类 作为 字符类 的元素
| 语法 | 说明 |
|---|---|
| [\d] | 数字 (相当于 \d) |
| [^\d] | 非数字 (相当于 \D) |
| [\D] | 非数字 (相当于 \D) |
| [^\D] | 数字 (相当于 \d) |
| [[:name:]] | 命名的“ASCII 类”包含在“字符类”中 (相当于 [:name:]) |
| [^[:name:]] | 命名的“ASCII 类”不包含在“字符类”中 (相当于 [:^name:]) |
| [\p{Name}] | 命名的“Unicode 类”包含在“字符类”中 (相当于 \p{Name}) |
| [^\p{Name}] | 命名的“Unicode 类”不包含在“字符类”中 (相当于 \P{Name}) |
完!
原文出自:小韩说课
微信关注:小韩说课