本文介绍在 go 中通过正则捕获组精准提取双引号内内容,并进一步按空格拆分为多个子串的完整实践方法,涵盖单匹配与多词场景,附可运行示例与关键注意事项。
在 Go 中处理类似 query=”tag1 tag2 tag3″ 这类结构化字符串时,直接用正则“一次性捕获所有独立标签”(如 tag1、tag2、tag3)并不推荐——因为 Go 的 regexp 包不支持重复捕获组(即 (…)* 不会返回多次匹配的子组结果),FindStringSubmatch 仅返回首次完整匹配中各捕获组的起始值,无法展开重复匹配项。
✅ 正确做法是:分两步处理
- 用非贪婪捕获组提取整个引号内字符串(如 “tag1 tag2 tag3” → “tag1 tag2 tag3″);
- 对捕获结果调用 strings.Split() 按空格分割,得到标签切片。
以下是推荐实现: