Если у вас есть некоторая подготовка в теории синтаксического анализа, то вы должны знать, что ни регулярных выражений, ни операций разбиения строк недостаточно для работы с более сложными грамматиками языков (грубо говоря, у них нет «памяти», необходимой настоящим грамматикам), и поэтому они неспособны обеспечить поддержку языковых конструкций, произвольно вложенных друг в друга, например вложенные инструкции if в языках программирования. Фактически именно этим обусловлена необходимость использования парсеров XML и HTML, представленных в предыдущем разделе: оба являются языками, допускающими произвольную вложенность синтаксических конструкций, анализ которых в целом невозможно реализовать с применением одних только регулярных выражений.
С теоретической точки зрения регулярные выражения в действительности предназначены только для реализации первой стадии анализа — разделения текста на компоненты, — которая известна как лек си че ский ана лиз. Несмотря на то, что шаблоны часто можно использовать для извлечения данных из текста, для истинного синтаксического анализа языков требуется нечто большее. В Python существует целый ряд способов восполнить этот недостаток:
Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, II том, 2011