При поиске END_OF_MASTER_IGNITION\s(.*)\sEND_OF_MASTER_IGNITION
вся эта подстрока будет заменена. Таким образом, чтобы сохранить некоторые его фрагменты, вы можете захватить их и обратиться к ним с обратными ссылками, такими как ${1}
1 .
Вам также следует искать (.*?)
вместо (.*)
, в противном случае вы замените все между первым начальным тегом и последним конечным тегом, а это не то, что вам нужно.
Например, вот так
var workerRe = regexp.MustCompile(`(?s)(\bEND_OF_MASTER_IGNITION\s+)(.*?)(\s+END_OF_MASTER_IGNITION\b)`)
s = workerRe.ReplaceAllString(content, "${1}"+regexp.QuoteMeta(masterContent)+"${3}")
https://play.golang.org/p/X7Gm6ClFNPD
Вывод:
control_plane_ignition = <<END_OF_MASTER_IGNITION
new-igncontent
END_OF_MASTER_IGNITION
1 предостережение: из-за особенностей реализации регулярного выражения Go избегайте использования обратных ссылок, таких как $1
и всегда пишите их как ${1}
. $1
«связывается» даже с нецифровыми значениями и в случае $1new-...
может стать ${1new}-...
.