Ваше регулярное выражение не учитывает, что комментарии могут содержать >
символов, которые не заканчивают комментарий. Попробуйте это регулярное выражение:
<!--.*?-->|<[^>]*>
Вам нужно будет включить опцию, чтобы .
соответствовал разрывам строк. Как это сделать, зависит от приложения или языка программирования, с которым вы используете это регулярное выражение. Например. в Perl вы бы использовали флаг /s
. В .NET вы бы установили RegexOptions.SingleLine
.