Регулярные выражения: ограничения. Разбор строк
- Пред- и постпросмотр (положительный и отрицательный).
- Разбор строк:
- Выделение лексем (только здесь помогают РВ)
- Анализ синтаксиса
- Интерпретация
Обработчики популярных форматов:
Shlex — лексический анализатор языка, похожего на shell
http://docs.python.org/library/htmlparser.html?highlight=parser#HTMLParser — разбор HTML-страницы
ConfigParser — разбор расширенной версии конфигурационного файла типа Windows .INI
Домашнее задание
Прочитать с чем знакомят на Google-упражнениях по теме «регулярные выражения в Python». Правда, у нас не хуже?
Прочитать о модификаторах регулярного выражения в документации. Для решения может понадобиться многострочный режим (re.MULTILINE) и/или режим, при котором '.' может сопоставляться с переводом строки (re.DOTALL)
В некоторой программе на Python у всех идентификаторов, начинающихся с большой буквы (например ABc), окружить эту букву подчёркиваниями (_A_Bc). Полученная программа должна работать как раньше (в том числе и ваша собственная программа)!
Не забыть о None, True, False — при их подмене программа не заработает
- Не забыть о строках (2 вида обычных и 2 вида многострочных) и комментариях, внутри которых заменять не надо
… вдруг что-то ещё не заработает?
Задача решается активным использованием регулярных выражений, но только при условии, что в комментариях не встречаются строковые конструкции. Почему?
Псевдографика. Вводится таблица шириной в 20 символов, границы которой обозначены символами +, - и |:
+------+-----------+ | QQ | QkrQ | +------+ | | | IDDQD | +------+-----------+
Преобразовать её в таблицу, границы которой заданы псевдографикой: ─ │ ┌ ┐ └ ┘ ├ ┤ ┬ ┴ ┼ (если эти символы видно, значит у вас установлен правильный шрифт; можно отсюда скопировать в программу):
┌──────┬───────────┐ │ QQ │ QkrQ │ ├──────┤ │ │ │ IDDQD │ └──────┴───────────┘
Предполагается использовать re.DOTALL и пре/постпросмотр. Сколько '.' в режиме re.DOTALL занимает перевод строки?
Не забывайте перекодировать в unicode.
Упражнение от Google (по наводке Ray). Там надо предварительно скачать и разархивировать файл с несколькими HTML-ями. Обратите внимание, что это не олимпиадная задача: что и как делать, ясно заранее (даже РВ уже написаны), а вот попрограммировать придётся.
Условные обозначения
— тема по Linux
— необязательная тема
— теоретическое задание
— тема для самостоятельного изучения