No hay día en SO que pase sin una pregunta sobre el análisis de (X) HTML o XML con expresiones regulares.
Si bien es relativamente fácil encontrar ejemplos que demuestren la no viabilidad de las expresiones regulares para esta tarea o con una colección de expresiones para representar el concepto, todavía no pude encontrar en SO una explicación formal de por qué esto no es posible hecho en laicos condiciones.
Las únicas explicaciones formales que pude encontrar hasta ahora en este sitio son probablemente extremadamente precisas, pero también bastante crípticas para el programador autodidacta:
el defecto aquí es que HTML es una gramática Chomsky Tipo 2 (gramática libre de contexto) y RegEx es una gramática Chomsky Tipo 3 (expresión regular)
o:
Las expresiones regulares solo pueden coincidir con lenguajes regulares, pero HTML es un lenguaje sin contexto.
o:
Un autómata finito (que es la estructura de datos que subyace a una expresión regular) no tiene memoria aparte del estado en el que se encuentra, y si tiene una anidación arbitrariamente profunda, necesita un autómata arbitrariamente grande, que choca con la noción de un autómata finito.
o:
El lema de Bombeo para idiomas regulares es la razón por la que no puede hacer eso.
[Para ser justos: la mayoría de las explicaciones anteriores enlazan con páginas de wikipedia, pero estas no son mucho más fáciles de entender que las propias respuestas].
Entonces, mi pregunta es: ¿ podría alguien proporcionar una traducción en términos sencillos de las explicaciones formales dadas anteriormente de por qué no es posible usar expresiones regulares para analizar (X) HTML / XML?
EDITAR: Después de leer la primera respuesta, pensé que debería aclarar: estoy buscando una "traducción" que también explique brevemente los conceptos que intenta traducir: al final de una respuesta, el lector debe tener una idea aproximada, por ejemplo - de lo que significan "lenguaje regular" y "gramática libre de contexto" ...