gpt4 book ai didi

regex - 使用Go删除与Yaml文件中的正则表达式匹配的行

转载 作者:行者123 更新时间:2023-12-01 22:14:13 26 4
gpt4 key购买 nike

我有以下yaml myfile.yml文件:

variables:
PYTHONUNBUFFERED: 1
GIT_STRATEGY: clone
Grpc__Client__Service__Target: ${URL}.${PREFIX}.mydomain.com:443

include:
- project: "myproject"
file: "/test.yml"

stages:
- mystage

我想删除以“Grpc”开头的行

我的代码:
package main

import (
"fmt"
"io/ioutil"
"strings"
"regexp"
)

func main() {

filename := "myfile.yml"

content, err := ioutil.ReadFile(filename)
check(errReadFile)

if err != nil {
panic(err)
}

m := regexp.MustCompile("^ Grpc__(.*)$")
grpcRemoved := m.ReplaceAllString(string(content), "")
fmt.Println(grpcRemoved)
}

最后,什么也没有删除。

我使用 MatchString测试了我的正则表达式,它返回了 true:
matchString, _ := regexp.MatchString("^  Grpc__(.*)$", "  Grpc__Client__Service__Target: ${URL}.${PREFIX}.mydomain.com:443")


matchStringFile, _ := regexp.MatchString("^  Grpc__(.*)$", string(content))

返回 false,这不是我期望的。然后我认为 ReplaceAllString无法正常工作,因为它找不到任何要替换的东西。

我的代码有什么问题?

最佳答案

这是因为您的正则表达式:"^ Grpc__(.*)$"^表示字符串的开始,$表示字符串的结束。

此字符串:" Grpc__Client__Service__Target: ${URL}.${PREFIX}.mydomain.com:443"匹配,因为它以Grpc__开头并以mydomain.com:443结尾

但是yaml文件中的字符串以variables: ...开头,以... -mystage结尾,因此不匹配。

尝试使用"Grpc__(.*)"(不使用^$),它将起作用。

关于regex - 使用Go删除与Yaml文件中的正则表达式匹配的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61455383/

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