Задать вопрос
YaRobot
@YaRobot

Как можно регулярным выражением получить три вхождения в многострочном тексте?

Приветствую!
Как можно в многострочном тексте найти три его части.
Для примера текст:

Мы оба влюблены в один и тот же сон,
Нас вынесла волна — и укатилась с шумом.
Ты ль жарче влюблена, иль я страстней влюблен,
Какое дело нам! Мы не поверим думам! 15 июня 1903
Информация сайта: https://domain.tdl/?name=asdasdasd


Первое совпадение: стих из N строк
Второе: Информация сайта
Третье: всё остальное (тут конкретно ссылка)

Сама проблема в том, что главный якорь Информация сайта а остальным надо как то оперировать, возможно менять местами и т.п.

Как можно на выходи получить список из трёх элементов? Интересует сама регулярка

Спасибо

P.S.
Последние два понимаю как найти regexp.MustCompile(`(Информация сайта\s)(.*)$`)
  • Вопрос задан
  • 95 просмотров
Подписаться 1 Простой 2 комментария
Решения вопроса 1
Тут лучше без регулярок, будет эффективнее: https://go.dev/play/p/7Ae-T6O0YmD

text := `Мы оба влюблены в один и тот же сон,
Нас вынесла волна — и укатилась с шумом.
Ты ль жарче влюблена, иль я страстней влюблен,
Какое дело нам! Мы не поверим думам! 15 июня 1903
Информация сайта: https://domain.tdl/?name=asdasdasd
`

parts := strings.Split(text, "Информация сайта: ")

fmt.Println(parts[0])
fmt.Println(parts[1])


Если очень хочется регуляркой, тогда так: https://go.dev/play/p/pJ0mtx4gWPC

re := regexp.MustCompile(`(?s)^(.+)Информация сайта: (.+)$`)

matches := re.FindStringSubmatch(text)

fmt.Println(matches[1])
fmt.Println(matches[2])
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы