【go语言】正则的使用
专栏:web开发笔记 April 16, 2025, 5:22 p.m. 44 阅读
介绍几个最基本的正则函数的使用方法

go语言里有几个常用的正则操作函数:
1、正则编译:Compile()
2、是否匹配:MatchString()
3、查找匹配字符串:FindString()
4、查找子匹配:FindStringSubmatch()
5、查找所有的字符串:FindAllString()
6、字符串替换:ReplaceAllString()
7、用函数返回值来替换:ReplaceAllStringFunc()

下面是一个例子:

package main

import (
	"fmt"
	"regexp"
)

func main() {
	//正则的编译,编译一次可以使用多次。正则一般写在反引号里``,避免转义
	r, _ := regexp.Compile(`a(.*?)z`)
	
	//是否匹配
	fmt.Println(r.MatchString("123abcdddde3z2")) //true
	
	//查找匹配的字符串
	fmt.Println(r.FindString("123abcdddde3z2")) //abcdddde3z
	
	//查找子匹配
	fmt.Println(r.FindStringSubmatch("123abcdddde3z2")) //[abcdddde3z bcdddde3]
	
	//查找所有的匹配字符串
	fmt.Println(r.FindAllString("123abcdddde3z2abc11z", -1)) //[abcdddde3z abc11z]
	
	//字符串替换
	fmt.Println(r.ReplaceAllString("123abcdddde3z2abc11z", "-")) //123-2-

	//字符串替换,替换值是一个函数的返回值
	ret := r.ReplaceAllStringFunc("123abcdddde3z2abc11z",
		func(b string) string {
			tmp := "[" + b + "]"
			return tmp
		})
	fmt.Println(ret) //123[abcdddde3z]2[abc11z]
}

正则也可以不编译,即时使用,用regexp.开头,第一个参数是正则。

matched = regexp.MatchString(`abc.*z`, "123abcdddde3z2")
fmt.Println(matched)

参考资料:

 

感谢阅读,更多文章点击这里:【专栏:web开发笔记】
最新20篇 开设专栏