本文介绍如何在 go 中利用 `regexp` 包精准匹配并替换嵌套的 `
在 Go 模板预处理或 HTML 片段清洗过程中,常需剥离特定自定义标签(如
核心思路是:匹配整个
* 避免跨大括号误匹配);以下是完整可运行示例:
package main
import (
"fmt"
"regexp"
)
func main() {
// 编译正则:匹配 标签块,捕获其中首个 {{...}} 内容
re := regexp.MustCompile(`(?s)]*>.*?({{[^}]*}}).*? `)
input := `aaa{{4567}}
11 12
20 aaabbb{{12345}}
amrambler`
result := re.ReplaceAllString(input, "$1")
fmt.Println(result)
// 输出:aaa{{4567}}aaabbb{{12345}}amrambler
} ⚠️ 注意事项:
总结:对于结构清晰、格式可控的模板片段,regexp.ReplaceAllString 配合精准捕获组是简洁高效的解决方案;但面对任意 HTML,仍应以安全性和可维护性为先,选择语义化解析方式。