Как можно с помощью регулярного выражения определить три части в многострочном тексте? В данном тексте есть стих из нескольких строк, информация о сайте и остальное содержимое. Каким образом можно сформировать список из этих трёх частей, учитывая "главный якорь" – "Информация сайта"?
Для поиска трех совпадений в многострочном тексте можно использовать следующее регулярное выражение:
```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])