regexp
Golang 标准库 - regexp
regexp 包实现了正则表达式搜索。正则表达式采用 RE2 语法,保证线性时间复杂度。
主要功能说明:
-
编译正则表达式:
Compile()编译正则(返回错误)MustCompile()编译正则(panic 失败)CompilePOSIX()POSIX 语法编译
-
匹配检查:
MatchString()检查字符串是否匹配Match()检查字节切片是否匹配FindString()查找匹配字符串
-
查找与提取:
FindAllString()查找所有匹配FindStringSubmatch()提取子匹配FindStringIndex()查找位置索引
-
替换与分割:
ReplaceAllString()替换所有匹配ReplaceAllStringFunc()使用函数替换Split()按正则分割
func main() {
// 1. 编译正则表达式
fmt.Println("=== 编译正则 ===")
re, err := regexp.Compile(`[a-z]+`)
if err != nil {
log.Fatal(err)
}
fmt.Println("编译成功")
// MustCompile 在编译失败时 panic
re2 := regexp.MustCompile(`\d+`)
fmt.Println("MustCompile 成功")
// 2. 匹配检查
fmt.Println("\n=== 匹配检查 ===")
fmt.Println(re.MatchString("hello123")) // true
fmt.Println(re2.MatchString("abc")) // false
fmt.Println(re2.MatchString("123")) // true
// 3. 查找匹配
fmt.Println("\n=== 查找匹配 ===")
// 查找第一个匹配
found := re.FindString("abc123def456")
fmt.Println("FindString:", found) // abc
// 查找所有匹配
allFound := re2.FindAllString("abc123def456ghi789", -1)
fmt.Printf("FindAllString: %v\n", allFound) // [123 456 789]
// 查找位置
loc := re.FindStringIndex("abc123def")
fmt.Printf("FindStringIndex: %v\n", loc) // [0 3]
// 4. 子匹配提取
fmt.Println("\n=== 子匹配提取 ===")
re3 := regexp.MustCompile(`(\w+)@(\w+)\.(\w+)`)
email := "contact@example.com"
submatch := re3.FindStringSubmatch(email)
fmt.Printf("子匹配: %v\n", submatch)
// [contact@example.com contact example com]
// 5. 替换
fmt.Println("\n=== 替换 ===")
replaced := re2.ReplaceAllString("abc123def456", "X")
fmt.Println("ReplaceAllString:", replaced) // abcXdefX
// 使用函数替换
result := re2.ReplaceAllStringFunc("123 456 789", func(s string) string {
return "[" + s + "]"
})
fmt.Println("ReplaceAllStringFunc:", result) // [123] [456] [789]
// 6. 分割
fmt.Println("\n=== 分割 ===")
parts := regexp.MustCompile(`\s+`).Split("hello world\tgo", -1)
fmt.Printf("Split: %v\n", parts) // [hello world go]
}
🛒 站长推荐(京东联盟)
- 《Go 程序设计语言》(Go 语言圣经,机械工业出版社) —— Go 官方团队出品,公认入门第一书
- 《Go 语言实战》(异步图书,人民邮电出版社) —— 实战导向,面试前巩固工程手感
- 《Go 语言编程之旅:一起用 Go 做项目》(博文视点,电子工业出版社) —— 项目驱动入门,从零写出完整应用
- Keychron K1Max 矮轴机械键盘(Mac/Win 双系统,QMK/VIA 开源改键) —— 轻薄矮轴 + 开源固件,程序员桌面常客
- 罗技 MX Master 3S 无线鼠标(Flow 跨屏,静音电磁滚轮) —— 人体工学设计,写代码一整天手不酸
以上链接含京东联盟推广代码;通过链接购买本站可能获得少量佣金,不影响你的购买价格。
📮 关注公众号「GO语言入门之路」
每周更新 Go + AI 应用开发实战:AI 面试官完整项目、MCP、Agent 工程化,完整源码随文章首发。
微信扫码,或搜索「GO语言入门之路」关注,第一时间获取系列更新与源码,不再错过任何一篇。