## 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 字符类](http://go.hellokang.net/regexp-perl.html)
* [ASCII 字符类](http://go.hellokang.net/regexp-ascii.html)
* [Unicode 字符类 (one-letter name)](http://go.hellokang.net/regexp-unicode-one-letter.html)
* [Unicode 字符类](http://go.hellokang.net/regexp-unicode.html)
<!-- more -->
## 2 组合
|语法|说明|
|:---|:---|
|xy |xy(x 后跟随 y)|
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) |编号捕获组(子匹配)|
|(?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})|
完!
原文出自:[小韩说课](http://www.hellokang.net/go/go-regexp-syntax/)
微信关注:小韩说课
![小韩说课](http://www.hellokang.net/images/wechat_subscription.jpg)
有疑问加站长微信联系(非本文作者))