Il n'y a pas de jour sur SO qui passe sans une question sur l'analyse (X) HTML ou XML avec des expressions régulières posées.
Bien qu'il soit relativement facile de trouver des exemples qui démontrent la non-viabilité des expressions rationnelles pour cette tâche ou avec une collection d'expressions pour représenter le concept, je n'ai toujours pas pu trouver sur SO une explication formelle de la raison pour laquelle cela n'est pas possible en profane. termes.
Les seules explications formelles que j'ai pu trouver jusqu'à présent sur ce site sont probablement extrêmement précises, mais aussi assez cryptiques pour le programmeur autodidacte:
le défaut ici est que HTML est une grammaire Chomsky Type 2 (grammaire sans contexte) et RegEx est une grammaire Chomsky Type 3 (expression régulière)
ou:
Les expressions régulières ne peuvent correspondre qu'à des langues régulières, mais HTML est un langage sans contexte.
ou:
Un automate fini (qui est la structure de données sous-jacente à une expression régulière) n'a pas de mémoire en dehors de l'état dans lequel il se trouve, et si vous avez une imbrication arbitraire profonde, vous avez besoin d'un automate arbitrairement grand, qui entre en conflit avec la notion d'automate fini.
ou:
Le lemme de pompage pour les langues régulières est la raison pour laquelle vous ne pouvez pas faire cela.
[Pour être honnête: la majorité des explications ci-dessus renvoient aux pages wikipedia, mais ce ne sont pas beaucoup plus faciles à comprendre que les réponses elles-mêmes].
Ma question est donc la suivante: quelqu'un pourrait-il s'il vous plaît fournir une traduction en termes simples des explications formelles données ci-dessus sur les raisons pour lesquelles il n'est pas possible d'utiliser des regex pour analyser (X) HTML / XML?
EDIT: Après avoir lu la première réponse, j'ai pensé que je devais clarifier: je cherche une "traduction" qui explique aussi brièvement les concepts qu'elle essaie de traduire: à la fin d'une réponse, le lecteur devrait avoir une idée approximative - par exemple - de ce que signifient "langage régulier" et "grammaire sans contexte" ...