我有以下几种可能的形式的字符串:
MYSTRING=${MYSTRING}\n MYSTRING=\n MYSTRING=randomstringwithvariablelength\n
我希望能够将它正则化为MYSTRING=foo,基本上替换MYSTRING=和之间的所有内容\n。我试过了:
MYSTRING=foo
MYSTRING=
\n
re := regexp.MustCompile("MYSTRING=*\n") s = re.ReplaceAllString(s, "foo")
但这是行不通的。任何帮助表示赞赏。
PS \n表示有一个换行符用于此目的。实际上不在那里。
您可以使用
(MYSTRING=).*
并替换为${1}foo。请参阅在线Go regex演示。
${1}foo
在这里,(MYSTRING=).*匹配并捕获MYSTRING=子字符串(${1}它将从替换模式中引用此值),.*并将匹配并消耗除换行符以外的任何0+字符,直至行尾。
${1}
.*
参见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