一尘不染

Golang正则表达式替换字符串之间

go

我有以下几种可能的形式的字符串:

MYSTRING=${MYSTRING}\n
MYSTRING=\n
MYSTRING=randomstringwithvariablelength\n

我希望能够将它正则化为MYSTRING=foo,基本上替换MYSTRING=和之间的所有内容\n。我试过了:

re := regexp.MustCompile("MYSTRING=*\n")
s = re.ReplaceAllString(s, "foo")

但这是行不通的。任何帮助表示赞赏。


PS \n表示有一个换行符用于此目的。实际上不在那里。


阅读 1189

收藏
2020-07-02

共1个答案

一尘不染

您可以使用

(MYSTRING=).*

并替换为${1}foo。请参阅在线Go regex演示

在这里,(MYSTRING=).*匹配并捕获MYSTRING=子字符串(${1}它将从替换模式中引用此值),.*并将匹配并消耗除换行符以外的任何0+字符,直至行尾。

参见Go演示

package main

import (
    "fmt"
    "regexp"
)

const sample = `MYSTRING=${MYSTRING}
MYSTRING=
MYSTRING=randomstringwithvariablelength
`
func main() {
    var re = regexp.MustCompile(`(MYSTRING=).*`)
    s := re.ReplaceAllString(sample, `${1}foo`)
    fmt.Println(s)
}

输出:

MYSTRING=foo
MYSTRING=foo
MYSTRING=foo
2020-07-02