Non c'è giorno in SO che trascorra senza una domanda sull'analisi (X) HTML o XML con espressioni regolari.
Sebbene sia relativamente facile trovare esempi che dimostrino la non fattibilità di regex per questo compito o con una raccolta di espressioni per rappresentare il concetto, non sono riuscito ancora a trovare su SO una spiegazione formale del motivo per cui ciò non è possibile fatto in parole semplici termini.
Le uniche spiegazioni formali che ho potuto trovare finora su questo sito sono probabilmente estremamente accurate, ma anche abbastanza criptiche per il programmatore autodidatta:
il difetto qui è che l'HTML è una grammatica Chomsky di tipo 2 (grammatica libera dal contesto) e RegEx è una grammatica di Chomsky di tipo 3 (espressione regolare)
o:
Le espressioni regolari possono corrispondere solo alle lingue regolari, ma l'HTML è un linguaggio privo di contesto.
o:
Un automa finito (che è la struttura dati alla base di un'espressione regolare) non ha memoria a parte lo stato in cui si trova, e se hai un annidamento arbitrariamente profondo, hai bisogno di un automa arbitrariamente grande, che collide con la nozione di automa finito.
o:
Il lemma Pumping per le lingue normali è il motivo per cui non puoi farlo.
[Per essere onesti: la maggior parte delle spiegazioni di cui sopra rimandano alle pagine di wikipedia, ma queste non sono molto più facili da capire delle risposte stesse].
Quindi la mia domanda è: qualcuno potrebbe fornire una traduzione in termini profani delle spiegazioni formali fornite sopra del motivo per cui non è possibile utilizzare regex per analizzare (X) HTML / XML?
EDIT: Dopo aver letto la prima risposta ho pensato che avrei dovuto chiarire: Sto cercando una "traduzione" che anche briefely spiega i concetti che cerca di tradurre: alla fine di una risposta, il lettore dovrebbe avere una vaga idea - per esempio - cosa significano "linguaggio normale" e "grammatica libera dal contesto" ...