Как можно с помощью регулярного выражения определить три части в многострочном тексте? В данном тексте есть стих из нескольких строк, информация о сайте и остальное содержимое. Каким образом можно сформировать список из этих трёх частей, учитывая "главный якорь" – "Информация сайта"?
Для поиска трех совпадений в многострочном тексте можно использовать следующее регулярное выражение: ```python import re text = """ Строка 1 Строка 2 Информация сайта Строка 3 Строка 4 Информация сайта Строка 5 """ pattern = re.compile(r"Информация сайта", re.MULTILINE) matches = pattern.findall(text) if len(matches) >= 3: print("Найдено три совпадения") else: print("Совпадений меньше трех") ``` Для разделения текста на три части можно использовать следующее регулярное выражение: ```python import re text = """ Строка 1 Строка 2 Информация сайта Строка 3 Строка 4 Информация сайта Строка 5 """ pattern = re.compile(r"(?s)(?=Информация сайта)(.*?)(?=Информация сайта|$)") matches = pattern.findall(text) for match in matches: print(match.strip()) ``` Это регулярное выражение разделит текст на три части: текст до первого "Информация сайта", текст между первым и вторым вхождением "Информация сайта" и текст после второго "Информация сайта". В итоге вы получите список из трех частей текста.
Тут лучше без регулярок, будет эффективнее: 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])