Получить все совпадения в регулярном выражении между разделителями, которые могут появляться несколько раз
У меня есть этот пример данных:
101 ASDFSDAFFA FASDFF TR QWETYUK K PPOWERETY Lpqeor: #
QEREYERP ASJDFL;Z PUTO_LJL;_QWERUOIUO
-- QERT
-- ASPOU3OIUW QW
-- NMBMSJQOET
--
OOPPWERPOQETUIOPYPOIUQEW
2 EWPROIWEURQPWEOIRUQWPEORIUQWEPORIJASDFKLJQPOWIERUAJASKLDFJQPWEOIRUQWPEIORUQWPEROIQWUEPROQIWEURQWPEORIUWPQEOIRUASA;K
QWERPQWOEIURQPWOEIRUPQWOEIRUQWPEORIQWUF;AKLSJDFPQIWEURS;KLADFJPQOWIEURAS;LDKFJQPOWIERUAS;DFKLAJS;DLKFQWEPRIOQUWEPOI
3
101 ASDFSDAFFA FASDFF TR QWETYUK K PPOWERETY Lpqeor: #
QEREYERP ASJDFL;Z PUTO_LJL;_QWERUOIUO
-- QERT
-- ASPO3POIUW QW
-- NMBMSJQOET
--
OOPPWERPOQETUIOPYPOIUQEW
2 EWPROIWEURQPWEOIRUQWPEORIUQWEPORIJASDFKLJQPOWIERUAJASKLDFJQPWEOIRUQWPEIORUQWPEROIQWUEPROQIWEURQWPEORIUWPQEOIRUASA;K
QWERPQWOEIURQPWOEIRUPQWOEIRUQWPEORIQWUF;AKLSJDFPQIWEURS;KLADFJPQOWIEURAS;LDKFJQPOWIERUAS;DFKLAJS;DLKFQWEPRIOQUWEPOI
3
И я хочу использовать регулярное выражение для захвата всего, что находится между 101 и одиноким 3, это также начало строки, пока мне удалось найти это выражение:
^1(?s)(.*?)3
Но он останавливается после того, как находит первые 3 между символами, и я хочу, чтобы он захватывал все до тех пор, пока не доберется до 3, и это может повторяться несколько раз, в этом примере шаблон появляется только дважды, но может быть тысяча экземпляры этого шаблона.