Не используйте найденные числа в качестве индексов.Вместо этого лучше использовать текущие индексы и пары ключ / значение.
Тем не менее, вы можете пойти (включить multiline
и verbose
, m
и x
):
^(\d+)\R
[->\d: ,]+\R
((?:.+\R?)+)
См. демо на regex101.com .
В
PHP
это может быть
<?php
$text = <<<END
3
00:01:40,200 --> 00:01:43,326
english part
4
00:01:43,534 --> 00:01:44,851
خط فارسی
5
00:01:45,063 --> 00:01:48,485
complex part مخلوط
6
00:01:45,063 --> 00:01:48,485
complex part مخلوط
in 2 lines
END;
$regex = <<<END
~
^(?P<line>\d+)\R
[->\d: ,]+\R
(?P<content>(?:.+\R?)+)
~mx
END;
preg_match_all($regex, $text, $matches);
print_r($matches);
?>
См. еще одну демонстрацию на ideone.com .