Использование регулярного выражения замены для добавления текста в начало каждой строки многострочной строки - PullRequest
1 голос
/ 13 апреля 2020

Я пытаюсь добавить указанный c текст в начало каждой строки. Я использую оператор регулярных выражений ^, чтобы найти начало каждой строки. Однако я могу заменить только первую строку моей многострочной строки. Что я делаю не так?

Код экзамена:

str := `This is a
        multiline
        string.`

var regexPattern = regexp.MustCompile("^")
s := regexPattern.ReplaceAllString(str, "START OF LINE")
fmt.Println(s)

Вывод:

START OF LINEThis is a
            multiline
            string.

1 Ответ

0 голосов
/ 13 апреля 2020

Вы можете использовать многострочный флаг (?m), чтобы изменить поведение карата ^ с «совпадения начала строки» на «совпадение начала строки»:

package main

import "fmt"
import "regexp"

func main() {
    str := `This is a
            multiline
            string.`

    var regexPattern = regexp.MustCompile(`(?m)^`)
    s := regexPattern.ReplaceAllString(str, "START OF LINE")
    fmt.Println(s)    
}

Вывод:

START OF LINEThis is a
START OF LINE            multiline
START OF LINE            string.

Конечно, забавный вывод - это артефакт того, как вы создали свою многострочную строку. Вы можете использовать (?m)^\s*, если хотите убрать ведущие пробелы:

START OF LINEThis is a
START OF LINEmultiline
START OF LINEstring.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...