go 正则表达式分组匹配_Go语言正则表达式用法实例小结【查找、匹配、替换等】...
本文实例讲述了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语言正则表达式用法实例小结【查找、匹配、替换等】...相关推荐
- c语言从文件查找字符串,C语言文件中字符串的查找与替换?
C语言文件中字符串的查找与替换? #include #include #include #include int Count=0; int findNum(char *str) { int i=0,t ...
- 【Groovy】集合遍历 ( 使用集合的 find 方法查找集合元素 | 闭包中使用 == 作为查找匹配条件 | 闭包中使用 is 作为查找匹配条件 | 闭包使用 true 作为条件 | 代码示例 )
文章目录 一.使用集合的 find 方法查找集合元素 1.闭包中使用 == 作为查找匹配条件 2.闭包中使用 is 作为查找匹配条件 3.闭包中使用 true 作为查找匹配条件 二.完整代码示例 一. ...
- C语言(void *)用法实例
unsigned char err; unsigned char f; unsigned char a(unsigned char i, void *j){ if(j==(void*)0) retur ...
- python args_Python可变参数*args和**kwargs用法实例小结
本文实例讲述了Python可变参数*args和**kwargs用法.分享给大家供大家参考,具体如下: 一句话简单概括:当函数的参数不确定的时候就需要用到*args和**kwargs,前者和后者的区别在 ...
- python装饰器实例-Python装饰器简单用法实例小结
本文总结分析了Python装饰器简单用法.分享给大家供大家参考,具体如下: 装饰器在python中扮演着很重要的作用,例如插入日志等,装饰器可以为添加额外的功能同时又不影响业务函数的功能. 比如,运行 ...
- php namespace原理作用,php 命名空间(namespace)原理与用法实例小结
本文实例讲述了php 命名空间(namespace)原理与用法.分享给大家供大家参考,具体如下: 命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致 ...
- 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 ...
- php 匹配非数字,正则表达式 - 获取匹配和非获取匹配
在使用正则表达式的时候,我们经常会使用括号()把某个部分括起来,称为一个子模式. 子模式有Capturing和Non-Capturing两种情况. Capturing指获取匹配,是指系统会在幕后将所有 ...
- python中正则表达式的简单应用_Python正则表达式详细应用
原文地址:http://www.jb51.net/article/65286.htm 1.了解正则表达式 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合, ...
最新文章
- 吴恩达新动作:建立全新机器学习资源Hub,「以数据为中心的AI」大本营
- l麒麟安装oracle,中标麒麟5.8x64下64bitOracle11gR2安装配置手册.docx
- 喜报!天虹股份签约神策数据
- Linux之Apache与Nginx的对比比较:并发性能 消耗机器资源 处理静态资源 模块 稳定性
- JDK8的日期时间类1
- C++ STL string的输出
- 判断给定数字n是否为素数(质数)
- JavaScript基础学习(一)—JavaScript简介
- Soda PDF Desktop Pro(电脑版pdf编辑器软件)官方正式版V12.0.283.16292 | 电脑pdf编辑器哪个好用?
- android 声纹识别 开源,声纹识别开源工具ASV-Subtools.pdf
- 远程计算机蓝屏,什么原因造成了蓝屏 电脑蓝屏错误代码介绍
- three.js 场景编辑器 源码解析(二)
- C++学习(complex类)
- 腾讯Bugly学习了解
- NYOJ 题目772 数独
- 零基础如何速成插画?插画入门教程分享!
- 华为p50不会用鸿蒙系统,华为p50会不会预装鸿蒙系统_华为p50会预装鸿蒙系统吗...
- 心系冬奥 翰墨传情 |当代书画名家为奥运加油书画推介展【宋碧梅篇】
- 一个游戏中玩家总经验值达到200就可以到达2级,达到400可以升到3级,达到600可升4级,达到800可升5级依此类推(玩家新创建的角色为0经验1级)。游戏中有一种超级经验丹,玩家1级的时候使用超级经
- 管理者的角色修炼-第一课总结