1. не используйте регулярки для HTML. Есть огромное количество решений на базе DOM, css selector, xpath
2. Скорей всего регулярка ломается на этом:
<h4 class="textable">
<h1 style="text-align: center;">
...
</h1>
</h4>
И как, по Вашему мнению, это надо обрабатывать? Причем такая вложенность способна поломать логику и некоторым рекурсивным парсерам.
<(h[1-7])[^>]*>(.*?)<\/\1>
Вариант регулярки, которая ссылается на найденное название тэга, чтобы искать именно такой же закрывающий тэг.
Скорей всего можно сделать регулярку, которая захватит при этом внутренний заголовок, но она будет уже слишком сложная.