$re = '/\h*(?<!`)<\?(\w+)\h*([^\v]*)\v*(.*?)\s*\?>/ms';
$str = '<x-section markdown="1" name="heros">
<x-container markdown="1" title="Heros" class="decorate-left prose">
{.lead}Heros are the header shown at the top of each page.
<?md class="asdf"
asdf
asdf
?>
<div><?md
asdf
?>
<?md x="y"
asdf
?>
They get `<?md` inserted automatically for you. Nothing extra to do here.
The only requirement is to set a `hero` key in the Front Matter for your page.
';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
// Print the entire match result
var_dump($matches);
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for PHP, please visit: http://php.net/manual/en/ref.pcre.php