En mi opinión, intentar analizar HTML con algo que no sea un analizador HTML es solo pedir un mundo de dolor. HTML es un realmente idioma complejo (que es una de las principales razones por las que se creó XHTML, que es mucho más simple que HTML).
Por ejemplo, esto:
<HTML/
<HEAD/
<TITLE/>/
<P/>
es un 100% bien formada, 100% documento HTML completa, válida.(Bueno, se está perdiendo la declaración DOCTYPE, pero aparte de eso ...)
Es semánticamente equivalente a
<html>
<head>
<title>
>
</title>
</head>
<body>
<p>
>
</p>
</body>
</html>
Pero es, sin embargo, HTML válido que vas a tener que tratar. Usted podría, por supuesto, idear una expresión regular para analizarlo, pero, como otros ya lo han sugerido, usar un analizador de HTML real es mucho más fácil.
Consulte esta respuesta para sus pensamientos/HTML Regex - http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454 # 1 732454 –