Não há dia no SO que passe sem uma pergunta sobre a análise (X) de HTML ou XML com expressões regulares sendo feitas.
Embora seja relativamente fácil encontrar exemplos que demonstrem a inviabilidade de regexes para esta tarefa ou com uma coleção de expressões para representar o conceito, ainda não consegui encontrar no SO uma explicação formal de por que isso não é possível feito em layman's termos.
As únicas explicações formais que consegui encontrar até agora neste site são provavelmente extremamente precisas, mas também bastante enigmáticas para o programador autodidata:
a falha aqui é que HTML é uma gramática Chomsky Tipo 2 (gramática livre de contexto) e RegEx é uma gramática Chomsky Tipo 3 (expressão regular)
ou:
Expressões regulares só podem corresponder a linguagens regulares, mas HTML é uma linguagem livre de contexto.
ou:
Um autômato finito (que é a estrutura de dados subjacente a uma expressão regular) não tem memória separada do estado em que se encontra e, se você tiver um aninhamento profundo arbitrário, precisará de um autômato arbitrariamente grande, que colide com a noção de um autômato finito.
ou:
O lema do Pumping para linguagens regulares é a razão pela qual você não pode fazer isso.
[Para ser justo: a maior parte da explicação acima leva a páginas da wikipedia, mas não são muito mais fáceis de entender do que as próprias respostas].
Portanto, minha pergunta é: alguém poderia fornecer uma tradução em termos gerais das explicações formais fornecidas acima de por que não é possível usar regex para analisar (X) HTML / XML?
EDITAR: Depois de ler a primeira resposta achei que deveria esclarecer: estou procurando uma "tradução" que também explique resumidamente os conceitos que tenta traduzir: ao final de uma resposta, o leitor deve ter uma ideia aproximada - por exemplo - do que significam "linguagem regular" e "gramática livre de contexto" ...