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

时间:2019-02-20 21:55:50

标签: regex go

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

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

我希望能够将其正则表达式转换为MYSTRING=foo,基本上替换掉MYSTRING=\n之间的所有内容。我尝试过:

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

但是它不起作用。任何帮助表示赞赏。


P.S。 \n表示为此目的有一个换行符。实际上不在那里。

1 个答案:

答案 0 :(得分:5)

您可以使用

(MYSTRING=).*

,并替换为${1}foo。参见the online Go regex demo

在这里,(MYSTRING=).*匹配并捕获MYSTRING=子字符串(${1}将从替换模式中引用此值),.*将匹配并消耗其他0+个字符比换行符要多到行尾。

请参见Go demo

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