正则表达式
# 编译函数
Compile函数或MustCompile函数是将正则表达式进行编译,返回优化的 Regexp 结构体
Compile
: 返回两个参数*Regexp,error类型MustCompile
: 只返回*Regexp类型
# 正则匹配
# 1. MatchString
返回的第一个参数是bool类型即匹配结果,第二个参数是error类型
demo
sourceStr := `my email is gerrylon@163.com` matched, _ := regexp.MatchString(`[\w-]+@[\w]+(?:\.[\w]+)+`, sourceStr) fmt.Printf("%v", matched) // true
1
2
3
# 2. FindString
返回一个字符串,该字符串具有最左边匹配的文本。如果找不到匹配项,则返回空字符串。
demo
r,_:=regexp.Compile("p([a-z]+)ch") //查找匹配的字符串 fmt.Println(r.FindString("peach punch")) //打印结果:peach
1
2
3
# 3. FindStringIndex
查找第一个匹配字符串开始和结束位置的索引,而不是匹配内容
demo
r,_:=regexp.Compile("p([a-z]+)ch") // 查找匹配字符串开始和结束位置的索引,而不是匹配内容[0 5] fmt.Println(r.FindStringIndex("peach punch")) //打印结果: [0 5]
1
2
3
# 4. FindStringSubmatch
查找第一个, 返回完全匹配和局部匹配的字符串
dmeo
r,_:=regexp.Compile("p([a-z]+)ch") //返回完全匹配和局部匹配的字符串,例如,这里会返回 p([a-z]+)ch 和 `([a-z]+) 的信息 fmt.Println(r.FindStringSubmatch("peach punch")) //打印结果:[peach ea]
1
2
3
# 5. FindAllString
查找字符串中所有符合规则的,可以指定个数
demo
r, _ := regexp.Compile("p([a-z]+)ch") fmt.Println(r.FindAllString("aapeach punch pqwerch", 2)) //打印结果: [peach punch]
1
2
# 6. FindStringIndex
查找全部 匹配字符串开始和结束位置的索引,而不是匹配内容
demo
r, _ := regexp.Compile("p([a-z]+)ch") fmt.Println(r.FindAllStringIndex("aapeach punch pqwerch", 2)) //打印结果: [[2 7] [8 13]]
1
2
# 7. FindAllStringSubmatch
返回全部的 完全匹配和局部匹配的字符串,可以指定个数
demo
r, _ := regexp.Compile("p([a-z]+)ch") fmt.Println(r.FindAllStringSubmatch("aapeach punch pqwerch", 2)) //打印结果: [[peach ea] [punch un]]
1
2
# 7. ReplaceAllString
将匹配的结果,替换成新输入的结果, 没有匹配到返回原string
demo
r, _ := regexp.Compile("p([a-z]+)ch") fmt.Println(r.ReplaceAllString("aapeach punch pqwerch", "-")) //打印结果: aa- - -
1
2
# 8. ReplaceAllFunc
demo
//Func 变量允许传递匹配内容到一个给定的函数中, in:=[]byte("a peach") out:=r1.ReplaceAllFunc(in,bytes.ToUpper) fmt.Printf(string(out)) //打印结果: a PEACH
1
2
3
4
上次更新: 2023/04/16, 18:35:33