На SO нет дня, который проходит без вопроса о разборе (X) HTML или XML с запросами регулярных выражений.
Хотя относительно легко придумать примеры, демонстрирующие нежизнеспособность регулярных выражений для этой задачи или с помощью набор выражений, чтобы представить концепцию, я все еще не мог найти на SO a формальное объяснение того, почему это невозможно сделать в условиях непрофессионала.
Единственные формальные объяснения, которые я мог найти до сих пор на этом сайте, вероятно, очень точны, но также довольно загадочны для программиста-самоучки:
недостаток заключается в том, что HTML - это грамматика типа Хомского типа 2 (контекст бесплатно грамматика), а RegEx - грамматика Хомского типа 3 (регулярное выражение)
или
Регулярные выражения могут соответствовать только обычным языкам, но HTML - это контекстно-свободный язык.
или
Конечный автомат (который является структурой данных, лежащей в основе регулярного выражение) не имеет памяти, кроме состояния, в котором она находится, и если вы имеете произвольно глубокое вложение, вам нужно сколь угодно большое автомат, который сталкивается с понятием конечного автомата.
или
Лемма прокачки для правильных языков - причина, по которой вы не можете что.
[Справедливости ради: большинство приведенных выше ссылок ссылаются на страницы Википедии, но это не намного легче понять, чем сами ответы).
Итак, мой вопрос: может ли кто-нибудь предоставить перевод в неспециалистических терминах формальных объяснений, приведенных выше, почему нельзя использовать регулярное выражение для синтаксического анализа (X) HTML/XML?
EDIT:. Прочитав первый ответ, я подумал, что должен уточнить: я ищу "перевод", который также кратко объясняет концепции, которые он пытается перевести: в конце ответа, у читателя должна быть приблизительная идея - например, о том, что означает "обычный язык" и "контекстно-свободная грамматика"...