gpt4 book ai didi

regex - 从 []byte 中去除 C 风格的注释

转载 作者:IT王子 更新时间:2023-10-29 00:57:06 28 4
gpt4 key购买 nike

全部。我正在尝试为特定类型的配置文件编写一个包装器,它是 JSON 编码的。不幸的是,该文件包含 C 风格的注释(///* */),这些会导致 json.Unmarshal 出错。有没有办法强制 Unmarshal 忽略这些评论,或者以其他方式轻松删除它们?

我现在正在研究 regexp,但我希望有一个优雅的解决方案,作为 Go 的初学者,我可能无法在几个过程中想出分钟。

最佳答案

您必须去掉注释,因为 JSON 规范不允许注释。正则表达式可以完成这项工作。

package main

import (
"fmt"
"regexp"
)

var bytes = []byte(`// this is a line comment
this is outside the comments
/* this
is
a
multi-line
comment */`)

func main() {
re := regexp.MustCompile("(?s)//.*?\n|/\\*.*?\\*/")
newBytes := re.ReplaceAll(bytes, nil)
fmt.Println(string(newBytes))
}

关于regex - 从 []byte 中去除 C 风格的注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12682405/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com