本文实例讲述了Go语言正则表达式用法。分享给大家供大家参考,具体如下:

Go语言的正则表达式使用很简单,示例代码:

复制代码 代码如下:

package test

import (

"fmt"

"regexp"

)

func RegixBase() {

//findTest()

//findIndexTest()

//findStringTest()

//findChinesString()

//findNumOrLowerLetter()

findAndReplace()

}

//传入[]byte,返回[]byte

func findTest() {

str := "ab001234hah120210a880218end"

reg := regexp.MustCompile("\\d{6}") //六位连续的数字

fmt.Println("------Find------")

//返回str中第一个匹配reg的字符串

data := reg.Find([]byte(str))

fmt.Println(string(data))

fmt.Println("------FindAll------")

//返回str中所有匹配reg的字符串

//第二个参数表示最多返回的个数,传-1表示返回所有结果

dataSlice := reg.FindAll([]byte(str), -1)

for _, v := range dataSlice {

fmt.Println(string(v))

}

}

//传入[]byte,返回首末位置索引

func findIndexTest() {

fmt.Println("------FindIndex------")

//返回第一个匹配的字符串的首末位置

reg2 := regexp.MustCompile("start\\d*end") //start开始,end结束,中间全是数字

str2 := "00start123endhahastart120PSend09start10000end"

//index[0]表示开始位置,index[1]表示结束位置

index := reg2.FindIndex([]byte(str2))

fmt.Println("start:", index[0], ",end:", index[1], str2[index[0]:index[1]])

fmt.Println("------FindAllIndex------")

//返回所有匹配的字符串首末位置

indexSlice := reg2.FindAllIndex([]byte(str2), -1)

for _, v := range indexSlice {

fmt.Println("start:", v[0], ",end:", v[1], str2[v[0]:v[1]])

}

}

//传入string,返回string(更加方便)

func findStringTest() {

fmt.Println("------FindString------")

str := "ab001234hah120210a880218end"

reg := regexp.MustCompile("\\d{6}") //六位连续的数字

fmt.Println(reg.FindString(str))

fmt.Println(reg.FindAllString(str, -1))

//以下两个方法是类似的

fmt.Println(reg.FindStringIndex(str))

fmt.Println(reg.FindIndex([]byte(str)))

}

//查找汉字

func findChinesString() {

str := "hello中国hello世界和平hi好"

reg := regexp.MustCompile("[\\p{Han}]+")

fmt.Println(reg.FindAllString(str, -1))

//[中国 世界和平 好]

}

//查找数字或小写字母

func findNumOrLowerLetter() {

str := "HAHA00azBAPabc09FGabHY99"

reg := regexp.MustCompile("[\\d|a-z]+")

fmt.Println(reg.FindAllString(str, -1))

//[00az abc09 ab 99]

}

//查找并替换

func findAndReplace() {

str := "Welcome for Beijing-Tianjin CRH train."

reg := regexp.MustCompile(" ")

fmt.Println(reg.ReplaceAllString(str, "@")) //将空格替换为@字符

//Welcome@for@Beijing-Tianjin@CRH@train.

}

PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:

JavaScript正则表达式在线测试工具:http://tools.uoften.com/regex/javascript

正则表达式在线生成工具:http://tools.uoften.com/regex/create_reg

希望本文所述对大家Go语言程序设计有所帮助。

go 正则表达式分组匹配_Go语言正则表达式用法实例小结【查找、匹配、替换等】...相关推荐

  1. c语言从文件查找字符串,C语言文件中字符串的查找与替换?

    C语言文件中字符串的查找与替换? #include #include #include #include int Count=0; int findNum(char *str) { int i=0,t ...

  2. 【Groovy】集合遍历 ( 使用集合的 find 方法查找集合元素 | 闭包中使用 == 作为查找匹配条件 | 闭包中使用 is 作为查找匹配条件 | 闭包使用 true 作为条件 | 代码示例 )

    文章目录 一.使用集合的 find 方法查找集合元素 1.闭包中使用 == 作为查找匹配条件 2.闭包中使用 is 作为查找匹配条件 3.闭包中使用 true 作为查找匹配条件 二.完整代码示例 一. ...

  3. C语言(void *)用法实例

    unsigned char err; unsigned char f; unsigned char a(unsigned char i, void *j){ if(j==(void*)0) retur ...

  4. python args_Python可变参数*args和**kwargs用法实例小结

    本文实例讲述了Python可变参数*args和**kwargs用法.分享给大家供大家参考,具体如下: 一句话简单概括:当函数的参数不确定的时候就需要用到*args和**kwargs,前者和后者的区别在 ...

  5. python装饰器实例-Python装饰器简单用法实例小结

    本文总结分析了Python装饰器简单用法.分享给大家供大家参考,具体如下: 装饰器在python中扮演着很重要的作用,例如插入日志等,装饰器可以为添加额外的功能同时又不影响业务函数的功能. 比如,运行 ...

  6. php namespace原理作用,php 命名空间(namespace)原理与用法实例小结

    本文实例讲述了php 命名空间(namespace)原理与用法.分享给大家供大家参考,具体如下: 命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致 ...

  7. oracle sql 匹配 一位,关于在SQL中查找匹配间隔:在SQL中查找匹配间隔-Oracle

    我有一张桌子: 表: START         END 1 Jan 09    31 Jan 2009 1 Feb 09    28 Feb 2009 1 Mar 09    31 Mar 2009 ...

  8. php 匹配非数字,正则表达式 - 获取匹配和非获取匹配

    在使用正则表达式的时候,我们经常会使用括号()把某个部分括起来,称为一个子模式. 子模式有Capturing和Non-Capturing两种情况. Capturing指获取匹配,是指系统会在幕后将所有 ...

  9. python中正则表达式的简单应用_Python正则表达式详细应用

    原文地址:http://www.jb51.net/article/65286.htm 1.了解正则表达式 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合, ...

最新文章

  1. 吴恩达新动作:建立全新机器学习资源Hub,「以数据为中心的AI」大本营
  2. l麒麟安装oracle,中标麒麟5.8x64下64bitOracle11gR2安装配置手册.docx
  3. 喜报!天虹股份签约神策数据
  4. Linux之Apache与Nginx的对比比较:并发性能 消耗机器资源 处理静态资源 模块 稳定性
  5. JDK8的日期时间类1
  6. C++ STL string的输出
  7. 判断给定数字n是否为素数(质数)
  8. JavaScript基础学习(一)—JavaScript简介
  9. Soda PDF Desktop Pro(电脑版pdf编辑器软件)官方正式版V12.0.283.16292 | 电脑pdf编辑器哪个好用?
  10. android 声纹识别 开源,声纹识别开源工具ASV-Subtools.pdf
  11. 远程计算机蓝屏,什么原因造成了蓝屏 电脑蓝屏错误代码介绍
  12. three.js 场景编辑器 源码解析(二)
  13. C++学习(complex类)
  14. 腾讯Bugly学习了解
  15. NYOJ 题目772 数独
  16. 零基础如何速成插画?插画入门教程分享!
  17. 华为p50不会用鸿蒙系统,华为p50会不会预装鸿蒙系统_华为p50会预装鸿蒙系统吗...
  18. 心系冬奥 翰墨传情 |当代书画名家为奥运加油书画推介展【宋碧梅篇】
  19. 一个游戏中玩家总经验值达到200就可以到达2级,达到400可以升到3级,达到600可升4级,达到800可升5级依此类推(玩家新创建的角色为0经验1级)。游戏中有一种超级经验丹,玩家1级的时候使用超级经
  20. 管理者的角色修炼-第一课总结

热门文章

  1. Golang遇到的一些问题总结
  2. WCF 安全性 之 自定义证书验证
  3. Kettle 之 javascript字段数据处理
  4. centos7配置静态ip地址
  5. Spring Boot 学习系列(04)—分而治之,多module打包
  6. c/c++ 标准库 string
  7. Exp 8 Web基础
  8. SPOJ QTREE
  9. Unity实现IOS原生分享
  10. asp.net mvc 生成二维码