Go语言支持的正则语法

hanzkering · · 2343 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

## 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 之间的文本,忽略文本中的正则语法|| |\\\\ |\\| |\\^ |^| |\\$ |$| |\\. |.| |\\* |*| |\\+ |+| |\\? |?| |\\{ |{| |\\} |}| |\\( |(| |\\) |)| |\\[ |[| |\\] |]| \\|&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;| ## 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)

有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2343 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传