import re
regex = re.compile(r"(?:^|(?<=\n))([0-2]\d:[0-5]\d:[0-5]\d[.,]\d{3}) --> ([0-2]\d:[0-5]\d:[0-5]\d[.,]\d{3})(.*?)((?:\d+\n)?(?=[0-2]\d:[0-5]\d:[0-5]\d[.,]\d{3})|$)", flags=re.DOTALL)
test_str = ("0\n"
"00:00:34,355 --> 00:00:36.635\n"
"Бублики! Купите горячии бублики!\n\n"
"1\n"
"00:00:37.315 --> 00:00:40.315\n"
"Ты что сделал, подлец?! Все ботинки мне изгадил!\n\n"
"2\n"
"00:00:40.995 --> 00:00:42.155\n"
"Пошел вон!\n\n\n"
"3000\n"
"00:00:42.275 --> 00:00:46.875\n"
"Ваше благородие, да бросьте вы этого дурака!\n"
" Идите до сюда, зараз все исправим.Давайте.\n\n\n"
"4\n"
"00:00:48.275 --> 00:00:49.715\n"
"На, чисть быстро.\n\n"
"00:00:49.915 --> 00:00:57.715\n"
"Один момент. Такие сапоги перемазали, мама родная!\n"
" У меня вакса-то германская, фирма \"Лавалин\".\n\n"
"00:00:57.915 --> 00:01:00.755\n"
"Не вакса, а масло просто, хоть на хлеб мажь.\n\n"
"00:01:01.795 --> 00:01:02.875\n"
"Чисть, чисть.\n\n"
"00:01:04.195 --> 00:01:05.315\n"
"Ой. Ваше благородие\n\n"
"00:01:05.875 --> 00:01:06.955\n"
"Что с тобой?\n\n"
"00:01:07.475 --> 00:01:08.875\n"
"Живот прихватило… Не могу..\n\n"
"00:01:09.035 --> 00:01:10.355\n"
"Ты куда? Иди сюда\n\n"
"00:01:10.635 --> 00:01:12.035\n"
" По нужде, ваше благородие!\n\n"
"00:01:14.915 --> 00:01:18.355\n"
"А помнишь погром на Дальницкой? Дракон чертов\n\n"
"00:01:30.595 --> 00:01:33.035\n"
"Или это я не знаю какая бывает жизнь?\n\n"
"00:01:36.915 --> 00:01:39.955\n"
" Нас родила мама. Так же как и вас\n\n"
"00:01:41.435 --> 00:01:46.195\n"
"Эта женщина - наша мама - хотела чтоб мы жили,\n\n"
"00:01:46.235 --> 00:01:48.035\n"
" а не мучались\n\n"
"00:01:48.395 --> 00:01:50.955\n"
"Она хотела чтоб мы жили хорошо\n\n"
"00:01:51.835 --> 00:01:55.515\n"
"и она была права,\n"
"как может быть права только наша мама...\n\n"
"00:01:57.275 --> 00:02:00.555\n"
"А Вы говорите, я не знаю, какая бывает жизнь...\n\n"
"00:02:16.755 --> 00:02:18.395\n"
"Стой! Стоп!\n")
matches = regex.finditer(test_str)
for match_num, match in enumerate(matches, start=1):
print(f"Match {match_num} was found at {match.start()}-{match.end()}: {match.group()}")
for group_num, group in enumerate(match.groups(), start=1):
print(f"Group {group_num} found at {match.start(group_num)}-{match.end(group_num)}: {group}")
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Python, please visit: https://docs.python.org/3/library/re.html