【发布时间】:2021-11-05 10:08:15
【问题描述】:
我有以下字符串:
new k8s.KubeRoleBinding(this, "argocd-application-controller", {
kind: "RoleBinding",
metadata: {
labels: {
"app.kubernetes.io/component": "application-controller",
"app.kubernetes.io/name": "argocd-application-controller",
"app.kubernetes.io/part-of": "argocd",
},
name: "argocd-application-controller",
},
roleRef: {
apiGroup: "rbac.authorization.k8s.io",
kind: "Role",
name: "argocd-application-controller",
},
subjects: [{
kind: "ServiceAccount",
name: "argocd-application-controller",
}],
});
我想删除第一次出现kind:的行
到目前为止,我尝试了以下方法,但它删除了所有出现的情况。
re := regexp.MustCompile("(?m)[\r\n]+^.*kind.*$")
res := re.ReplaceAllString(str, "$1")
带有代码的游乐场链接:https://play.golang.org/p/SMiyTJvKNVF
想要的字符串:
new k8s.KubeRoleBinding(this, "argocd-application-controller", {
metadata: {
labels: {
"app.kubernetes.io/component": "application-controller",
"app.kubernetes.io/name": "argocd-application-controller",
"app.kubernetes.io/part-of": "argocd",
},
name: "argocd-application-controller",
},
roleRef: {
apiGroup: "rbac.authorization.k8s.io",
kind: "Role",
name: "argocd-application-controller",
},
subjects: [{
kind: "ServiceAccount",
name: "argocd-application-controller",
}],
});
【问题讨论】:
-
因为正则表达式没有子匹配,所以 $1 计算为空字符串。您是打算删除匹配项还是打算使用 ReplaceAllLiteralString 而不是 ReplaceAllString?
-
@TaylorRex,我更新了我的问题以添加我想要的值。我想删除包含第一个匹配项的整行。