Following up on my previous question about using Golang's regex to replace between strings. I now have a bit of complexity added to it. Here is what the contexts of my file looks like:
foo:
blahblah
MYSTRING=*
bar:
blah
blah
MYSTRING=*
I need to replace what's between MYSTRING=
and \n
with a string of my choice (like previous stated in the original post). I can do that with:
var re = regexp.MustCompile(`(MYSTRING=).*`)
s := re.ReplaceAllString(content, `${1}stringofmychoice`)
But now I need to match and replace only after a certain occurrence. So that the contents of my file can look something like this:
foo:
blahblah
MYSTRING=foostring
bar:
blah
blah
MYSTRING=barstring
ReplaceAllString
obviously replaces everything, which is not what I want. Is there a way to only match and replace the first occurrence after a certain string?
For a bit of background about all of this. I'm trying to write a program to edit the contents of a given docker-compose.yml
file and its environment variables. I need to edit the environment variable MYSTRING
differently depending on what service it's listed under. In the example above, the two different services would be foo
and bar
.