Golang регулярное выражение заменить между строками - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть несколько строк в следующих возможных формах:

MYSTRING=${MYSTRING}\n
MYSTRING=\n
MYSTRING=randomstringwithvariablelength\n

Я хочу иметь возможность преобразовать это в MYSTRING=foo, в основном заменяя все между MYSTRING= и \n.Я пробовал:

re := regexp.MustCompile("MYSTRING=*\n")
s = re.ReplaceAllString(s, "foo")

Но это не работает.Любая помощь приветствуется.


PS * \n означает, что для этой цели есть новая строка.На самом деле его там нет.

1 Ответ

0 голосов
/ 21 февраля 2019

Вы можете использовать

(MYSTRING=).*

и заменить на ${1}foo.См. онлайн-демонстрацию Go regex .

Здесь (MYSTRING=).* соответствует и захватывает подстроку MYSTRING= (${1} будет ссылаться на это значение из шаблона замены), а .* будетсопоставлять и использовать любые 0+ символов, кроме символов разрыва строки, до конца строки.

См. демонстрационную версию 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...