В продолжение моего предыдущего вопроса об использовании регулярных выражений Голанга для замены строк.Теперь я добавил немного сложности.Вот как выглядит контекст моего файла:
foo:
blahblah
MYSTRING=*
bar:
blah
blah
MYSTRING=*
Мне нужно заменить то, что находится между MYSTRING=
и \n
строкой по моему выбору (как указано в предыдущем сообщении).Я могу сделать это с помощью:
var re = regexp.MustCompile(`(MYSTRING=).*`)
s := re.ReplaceAllString(content, `${1}stringofmychoice`)
Но теперь мне нужно сопоставлять и заменять только после определенного вхождения.Так что содержимое моего файла может выглядеть примерно так:
foo:
blahblah
MYSTRING=foostring
bar:
blah
blah
MYSTRING=barstring
ReplaceAllString
, очевидно, заменяет все, что я не хочу.Есть ли способ сопоставить и заменить только первое вхождение после определенной строки?
Для получения дополнительной информации обо всем этом.Я пытаюсь написать программу для редактирования содержимого данного docker-compose.yml
файла и его переменных среды.Мне нужно отредактировать переменную окружения MYSTRING
по-разному, в зависимости от того, в каком сервисе она указана.В приведенном выше примере две разные службы будут foo
и bar
.