I have figured it out now. get_the_excerpt strips out HTML tags anyway so the Reg-ex was looking for a <h1> that wasn’t there
I used this in the end
<?php $little_excerpt = trim(substr(strip_tags(preg_replace("/(<h1>.*?<\/h1>|\[.*\])/m","",get_the_content())),0,200))."..."; ?>
Which also strips out any shortcodes ??