【问题标题】:Remove first occurence of match in regex golang删除正则表达式 golang 中第一次出现的匹配项
【发布时间】: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,我更新了我的问题以添加我想要的值。我想删除包含第一个匹配项的整行。

标签: regex string go


【解决方案1】:

找到第一个匹配的位置。使用字符串切片操作删除匹配。

loc := re.FindStringIndex(str)
res := str
if loc != nil {
    res = str[:loc[0]] + str[loc[1]:]
}

Run the example on the playground.

【讨论】:

    猜你喜欢
    • 2016-03-18
    • 2022-08-13
    • 2018-06-28
    • 1970-01-01
    • 2015-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多