Go语言支持的正则语法
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}) |
完!
原文出自:小韩说课
微信关注:小韩说课