正規表現で苦戦しております。

'<h2>foo</h2>
    randomstr
    <span>randamstr</span>
<h2>bar</h2>
    <div>randomstr</div>
<h2>baz</h2>
    randomstr'

このような文字列を

[
    [0] => '<h2>foo</h2>randomstr<span>randamstr</span>',
    [1] => '<h2>bar</h2><div>randomstr</div>',
    [2] => '<h2>baz</h2>randomstr',
]

このようにpreg_match_allなどで抜き出したいのですが、どのように正規表現を書けばよいのでしょうか?