Для начала почитать мануалы по регуляркам. Как строятся группы, и как делать "вариативные" группы.
Затем переходить к практике. По смыслу задачи: https://regex101.com/r/ffEJbB/2
https://regex101.com/r/4ycU8j/1
p.s.
Если текст идёт сплошняком (как я его скопировал), то - заменить `$` на `\n`.
p.p.s.
Ну и да, если текст идёт сплошняком - `preg_match_all`