<!--
<div>
html-код
</div>
-->
Что ему мало ?
Вот такой вариант <!--\s*[^>]*?\s*> находит первую часть, но не весь блок:
<!--\r\n<div>
Меняю на <!--\s*[^>]*?\s*--> и ничего не находит.
_____________
если помог, не скупись на карму =)
<!--
<div>
html-код
</div>
-->
<!--\r\n<div>
$code = '<!-- Hello, world! -->
<!--
<div>
Hello!
</div>
-->';
$regex = '/<!--.*?-->/s';
echo preg_match_all($regex, $code, $matches);
var_dump($matches);