我有以下几种可能的字符串:
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
表示为此目的有一个换行符。实际上不在那里。
答案 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