您的位置:首页 >Go语言正则匹配与替换教程
发布于2025-12-25 阅读(0)
扫一扫,手机访问
Go 的 regexp 包基于 RE2 引擎,支持查找、替换、分割和验证,但不支持回溯引用等 PCRE 高级特性;推荐用 MustCompile 编译固定正则,再调用 MatchString、FindString 等方法;需位置信息时用 FindStringIndex 或 FindStringSubmatchIndex;替换可用 ReplaceAllString 或函数式 ReplaceAllStringFunc;注意转义、捕获组编号从 1 开始、用户输入应使用 Compile 而非 MustCompile。

在 Go 语言中,regexp 包提供了完整的正则表达式支持,可用于查找、替换、分割和验证文本。它不支持 PCRE 的某些高级特性(如回溯引用、条件匹配),但对大多数常见场景已足够强大且性能优秀。
使用 regexp.MustCompile 编译正则(推荐用于固定正则),再调用 MatchString 或 FindString 等方法:
MatchString(pattern, text):返回 bool,仅判断是否匹配FindString(text):返回第一个匹配的子串(string)FindAllString(text, n):返回最多 n 个匹配的字符串切片(n = -1 表示全部)示例:
r := regexp.MustCompile(`\b\w+@\w+\.\w+\b`)当需要知道匹配位置或提取分组内容时,用 FindStringSubmatch 或 FindStringIndex:
FindStringIndex(text):返回 [2]int,表示起始和结束字节索引FindStringSubmatch(text):返回匹配的原始字节切片(含捕获组)FindStringSubmatchIndex(text):返回所有捕获组的索引数组,主匹配在索引 0,后续组依次排列示例(提取域名):
r := regexp.MustCompile(`(\w+)@(\w+\.\w+)`)替换主要靠 ReplaceAllString 和更灵活的 ReplaceAllStringFunc 或 ReplaceAllStringSubmatchFunc:
ReplaceAllString(text, repl):将所有匹配替换为固定字符串ReplaceAllStringFunc(text, func(string) string):对每个匹配子串执行函数,返回替换结果ReplaceAllStringSubmatchFunc(text, func(string) string):传入的是整个匹配(含捕获组),适合复杂逻辑示例(手机号脱敏):
r := regexp.MustCompile(`1[3-9]\d{9}`)Go 的正则引擎是 RE2,强调安全与线性时间复杂度,因此部分语法不支持:
\1 这类反向引用,也不能在替换字符串中直接写 $1$0 表示整个匹配(仅在 ReplaceAllLiteralString 等少数方法中可用)`\\d+` 表示一个数字序列regexp.Compile 并检查 error
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
9