Go语言支持的正则语法
hanzkering
· 2018-11-12 22:19:50 · 2489 次点击 ·
预计阅读时间 3 分钟 ·
大约8小时之前 开始浏览
这是一个创建于 2018-11-12 22:19:50 的文章,其中的信息可能已经有所发展或是发生改变。
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 组合
x|y x或y
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) |
编号捕获组(子匹配) |
(?Pre) |
命名编号捕获组(子匹配) |
(?: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}) |
完!
原文出自:小韩说课
微信关注:小韩说课

有疑问加站长微信联系(非本文作者))
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889