$re = '/(<!--.*?-->)|(<!--[\S\s]+?-->)|(<!--[\S\s]*?$)/';
$str = '<!-- Comment 1 -->
<noinclude>
{{draft}}
</noinclude>
# A
# B
# C
# red → rouge
# yellow → jaune
# green → vert [pos:adjective, ipa: /vɜːt/]
<!-- Comment 2a
Comment 2b
Comment 2c -->
<!-- single-line -->
<!-- <!-- nested single-line -->
not a comment
<!--
<!-- nested multiline
-->
<!--
multiline
-->
<!-- truncated
';
$subst = "";
$result = preg_replace($re, $subst, $str);
echo "The result of the substitution is ".$result;
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