Go语言支持的正则语法

1 字符

语法说明
.任意字符,在单行模式(s标志)下,也可以匹配换行
[xyz]字符类
[^xyz]否定字符类
\dPerl 字符类
\D否定 Perl 字符类
[[:alpha:]]ASCII 字符类
[[:^alpha:]]否定 ASCII 字符类
\pNUnicode 字符类 (one-letter name)
\p{Greek}Unicode 字符类
\PN否定 Unicode 字符类 (one-letter name)
\P{Greek}否定 Unicode 字符类

参考以下附录,获取具体字符类的内容:

2 组合

语法说明
xyxy(x 后跟随 y)
x|yx 或 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)
\1238 進制编码所代表的字符(必须是 3 位数字)
\x7F16 進制编码所代表的字符(必须是 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})

完!
原文出自:小韩说课
微信关注:小韩说课
小韩说课

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值