Go语言支持的正则语法

幸运草 2020年4月24日22:58:45函数代码评论阅读模式

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 字符类

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

  • Perl 字符类
  • ASCII 字符类
  • Unicode 字符类 (one-letter name)
  • Unicode 字符类

go.hellokang.net 可以获取相关内容

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) 编号捕获组(子匹配)
(?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})

特别声明:以上文章内容仅代表作者本人观点,不代表变化吧观点或立场。如有关于作品内容、版权或其它问题请于作品发表后的30日内与变化吧联系。

  • 赞助本站
  • 微信扫一扫
  • weinxin
  • 加入Q群
  • QQ扫一扫
  • weinxin
幸运草
Go语言中的常量 函数代码

Go语言中的常量

1 概述 常量,一经定义不可更改的量。功能角度看,当出现不需要被更改的数据时,应该使用常量进行存储,例如圆周率。从语法的角度看,使用常量可以保证数据,在整个运行期间内,不会被更改。例如当前处理器的架构...
Go语言的接口 函数代码

Go语言的接口

Go语言-接口 在Go语言中,一个接口类型总是代表着某一种类型(即所有实现它的类型)的行为。一个接口类型的声明通常会包含关键字type、类型名称、关键字interface以及由花括号包裹的若干方法声明...
Go语言的包管理 函数代码

Go语言的包管理

1 概述 Go 语言的源码复用建立在包(package)基础之上。包通过 package, import, GOPATH 操作完成。 2 main包 Go 语言的入口 main() 函数所在的包(pa...
Go语言方法规则 函数代码

Go语言方法规则

Go语言方法规则 根据调用者不同,方法分为两种表现形式:方法(method value)、方法表达式(method expression)。 两者都可像普通函数那样赋值和传参,区别在于 方法 (met...

发表评论