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, "@")) //将空格替换为@字符

	//[email protected]@[email protected]@train.
}
时间: 2024-07-29 01:35:58

Go语言:正则表达式的使用的相关文章

笔记整理——Linux下C语言正则表达式

Linux下C语言正则表达式使用详解 - Google Chrome (2013/5/2 16:40:37) Linux下C语言正则表达式使用详解 2012年6月6日Neal627 views发表评论阅读评论 标准的C和C++都不支持正则表达式,但有一些函数库可以辅助C/C++程序员完成这一功能,其中最著名的当数Philip Hazel的Perl-Compatible Regular Expression库,许多Linux发行版本都带有这个函数库. C语言处理正则表达式常用的函数有regcomp

C语言正则表达式

#include <sys/types.h> #include <regex.h> int regcomp(regex_t *preg, const char *regex, int cflags); int regexec(const regex_t *preg, const char *string, size_t nmatch, regmatch_t pmatch[], int eflags); size_t regerror(int errcode, const regex

cocos2dx下C++11正则表达式和android下C语言正则表达式的使用--------案例密码校验

/************************************************************************/ /* 密码校验 */ /* C++11下没有问题,但是C语言是有问题的 */ /* 错误案例:^[[email protected]#$%^&*()_+`\\-={}\\[\\]:\";'<>?,.\\/]{6,20}$ 正确案例:^[][email protected]#$%^&*()_+`={}:;'<>

C语言正则表达式详解 regcomp() regexec() regfree()详解

标准的C和C++都不支持正则表达式,但有一些函数库可以辅助C/C++程序员完成这一功能,其中最著名的当数Philip Hazel的Perl-Compatible Regular Expression库,许多Linux发行版本都带有这个函数库. C语言处理正则表达式常用的函数有regcomp().regexec().regfree()和regerror(),一般分为三个步骤,如下所示: C语言中使用正则表达式一般分为三步: 编译正则表达式 regcomp() 匹配正则表达式 regexec() 释

R语言-正则表达式1

R语言的正则表达式主要用来处理文本资料,比如进行查找.替换等等. 首先是一些处理文本时会用到的函数: 字符串分割:strsplit() 字符串连接:paste(),paste0() 计算字符串长度:nchar(),length() 字符串截取:substr(),substring() 查看是否存在某个字符:grep(p,x) <返回匹配到的元素的下标(位置),p是一个正则表达式 grepl(p,x)<返回逻辑值false or true 举个栗子: s<-c("123abc\\

go语言正则表达式-实践教程

正则表达式处理使用到的库 regexp 使用到regexp库函数有 MustCompile 和 Compile MustCompile 的作用和 Compile 一样, 将正则表达式编译成一个正则对象(使用 PERL 语法). 该正则对象会采用"leftmost-first"模式.选择第一个匹配结果.如果正则表达式语法错误,则返 回错误信息.不同的是,当正则表达式 str 不合法时,MustCompile 会抛出异常,而 Compile 仅返回一个 error 值 FindString

各语言正则表达式

韩语正则 [\uAC00-\uD7A3] 阿拉伯语正则 1:[\x{0600}-\x{06FF}] 2:[?-?] 点击我 在点我 hello world!

Go语言之正则表达式

[TOC] Go语言正则表达式 方式一:使用Compile package main import ( "fmt" "regexp" ) const text = "my email is [email protected]" func main() { //re 是 正则表达式的匹配器 re, err := regexp.Compile("[email protected]") if err != nil { panic(e

JS正则表达式大全(整理详细且实用)

JS正则表达式大全(整理详细且实用).需要的朋友可以过来参考下,希望对大家有所帮助!! 正则表达式中的特殊字符 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个单词的边界. -或- 对正则表达式功能字符的还原,如"*"匹配它前面元字符0次或多次,/a*/将匹配a,aa,aaa,加了"\"后,/a\*/将只匹配"a*".

JS正则表达式大全【转】

正则表达式中的特殊字符 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个单词的边界. -或- 对正则表达式功能字符的还原,如"*"匹配它前面元字符0次或多次,/a*/将匹配a,aa,aaa,加了"\"后,/a\*/将只匹配"a*". ^ 匹配一个输入或一行的开头,/^a/匹配"an A",而不匹配&q