Книги: [Классика] [Базы данных] [Internet/WWW] [Сети] [Программирование] [UNIX] [Windows] [Безопасность] [Графика] [Software Engineering] [ERP-системы] [Hardware]
Содержание
Предисловие
Почему я написал эту книгу
Для кого написана эта книга
Как читать эту книгу
Книга как повесть
Книга как справочник
Структура книги
Вводная часть
Подробное описание
Конкретные программы
Условные обозначения
Задачи
Личные комментарии и благодарности
Мои предшественники
Прочие благодарности
Перспективы
От издательства
Глава 1 Знакомство с регулярными выражениями
Решение реальных задач
Регулярные выражения как язык
Аналогия с файловыми шаблонами
Аналогия с языками
Регулярные выражения как особый склад ума
Поиск в текстовых файлах: egrep
Метасимволы egrep
Начало и конец строки
Символьные классы
Один произвольный символ
Выбор
Границы слов
В двух словах
Необязательные элементы
Другие квантификаторы: повторение
Игнорирование различий в регистре символов
Круглые скобки и обратные ссылки
Экранирование
Новые горизонты
Языковая диверсификация
Смысл регулярного выражения
Дополнительные примеры
Терминология регулярных выражений
Пути к совершенствованию
Итоги
Личные заметки
Глава 2 Практическое применение регулярных выражений
О примерах
Краткий вводный курс Perl
Проверка текста с использованием регулярных выражений
Переходим к реальным примерам
Побочные эффекты успешных совпадений
Инвертированный поиск
Взаимодействие регулярных выражений с логикой программы
Лирическое отступление
Модификация текста с использованием регулярных выражений
Автоматизация редактирования
Маленькая почтовая утилита
Задача с повторяющимися словами
Глава 3 Регулярные выражения: диалекты и возможности
Для чего написана эта глава
История регулярных выражений
grep как мировоззрение
Все течет, все изменяется
С первого взгляда
POSIX
Основные операции с регулярными выражениями
Идентификация регулярных выражений
Операции с совпавшим текстом
Другие примеры
Итоги
Механизмы и внешняя отделка
Отделка и внешний вид
Двигатели и механика
Стандартные метасимволы
Сокращенные обозначения символов
Строки как регулярные выражения
Сокращенные обозначения классов, символ
"точка" и символьные классы
Якорные метасимволы
Группировка и сохранение текста
Квантификаторы
Конструкция выбора
Путеводитель по серьезным главам
Информация о конкретных программах
Глава 4 Механика обработки регулярных выражений
Запустить двигатели!
Два вида двигателей
Новые стандарты
Типы механизмов регулярных выражений
С позиций избыточности
Основы поиска совпадений
О примерах
Правило 1: Более раннее совпадение выигрывает
Смещение текущей позиции поиска
Компоненты и части двигателя
Правило 2: Квантификаторы работают максимально
Механизмы регулярных выражений
НКА: механизм, управляемый регулярным выражением
ДКА: механизм, управляемый текстом
Великая Тайна
Возврат
Крошечная аналогия
Два важных замечания
Сохраненные состояния
Возврат и максимализм
Подробнее о максимализме
Проблемы максимализма
Многосимвольные "кавычки"
Минимализм?
Максимализм всегда выбирает совпадение
Максимальна ли конструкция выбора?
Применение минимальной конструкции выбора
Максимальный выбор в перспективе
Символьные классы и конструкция выбора
НКА, ДКА и POSIX
"Самое длинное совпадение, ближнее к левому краю"
Правило "самого длинного совпадения, ближнего
к левому краю" в POSIX
Скорость и эффективность
Сравнение ДКА и НКА
Методика построения регулярных выражений
Основные факторы
Точность формулировки
Затруднения и непреодолимые препятствия
Исключение нежелательных совпадений
Поиск текста в ограничителях
Данные и предположения
Еще несколько примеров максимализма
Итоги
Итоги по механике поиска
Примеры практического использования
Глава 5 Построение регулярных выражений
Убедительный пример
Простое изменение - начинаем с более вероятного случая
Локализация максимального поиска
Возвращение к реальности
Возврат с глобальной точки зрения
POSIX НКА - работа продолжается
Работа механизма при отсутствии совпадения
Уточнение
Конструкция выбора может дорого обойтись
Активный старт
Влияние круглых скобок
Внутренние оптимизации
Исключение по первому символу
Проверка фиксированных строк
Простое повторение
Исключение лишних квантификаторов
Учет длины текста
Учет длины совпадения
Учет границ совпадения
Границы логических строк/фрагментов
Кэширование при компиляции
Определение типа механизма
Базовый НКА или ДКА?
Традиционный НКА или POSIX НКА?
Раскрутка цикла
Метод 1: построение регулярного выражения
по результатам тестов
Общий шаблон "раскрутки цикла"
Метод 2: структурный анализ
Метод 3: доменные имена Интернета
Замечания
Раскрутка цикла на примере поиска комментариев С
Проблемы регулярных выражений
Наивный подход
Раскрутка выражения для поиска комментариев С
Исключение случайных совпадений
Управление поиском совпадения
Управление поиском = скорость
Свертка
Думайте!
Крутые повороты оптимизации
Глава 6 Регулярные выражения в конкретных программах
Вопросы, которые вы должны задать
Даже такие простые программы, как grep
В этой главе
Awk
Различия между диалектами регулярных выражений awk
Функции и операции awk для работы с регулярными выражениями
Tcl
Передача регулярных выражений в операндах Тс1
Использование регулярных выражений в Тс1
Оптимизация регулярных выражений Тс1
GNU Emacs
Строки Emacs как регулярные выражения
Диалект регулярных выражений Emacs
Результаты поиска в Emacs
Хронометраж в Emacs
Оптимизация регулярных выражений в Emacs
Глава 7 Регулярные выражения в Perl
В этой главе
Путь Perl
Регулярные выражения как компонент языка
Самая сильная сторона Perl
Самая слабая сторона Perl
Курица, яйцо и Путь Perl
Ознакомительный пример: анализ текста, разделенного запятыми
Регулярные выражения и Путь Perl
Пришествие Perl
Pеrl'измы из области регулярных выражений
Контекст выражения
Динамическая видимость и последствия
совпадения регулярных выражений
Специальные переменные, изменяемые при поиске
Предварительная обработка и интерполяция переменных
Диалект регулярных выражений Perl
Квантификаторы - максимальные и минимальные
Группировка
Якорные метасимволы
Привязка к текущей позиции при глобальном поиске
Границы слов
Удобные сокращения и другие синтаксические элементы
Символьные классы
Изменение регистра символов с применением \Q и аналогов
Оператор поиска
Ограничители регулярного выражения-операнда
Модификаторы поиска
Определение целевого текста
Другие побочные эффекты оператора поиска
Значение, возвращаемое оператором поиска
Внешние факторы, влияющие на работу оператора поиска
Оператор подстановки
Операнд-замена
Модификатор /е
Контекст и возвращаемое значение
Применение модификатора /g с регулярными выражениями,
которые могут совпадать с пустой строкой
Оператор разбиения
Простейшее разбиение
Нетривиальное разбиение
Нетривиальное использование первого операнда split
Оператор split в скалярном контексте
Сохраняющие круглые скобки в первом операнде split
Проблемы эффективности в Perl
У каждой задачи есть несколько решений
Компиляция регулярных выражений,
модификатор /о и эффективность
Нежелательная переменная $& и ее друзья
Влияние модификатора/i на эффективность
Проблемы эффективности подстановок
Хронометраж
Отладочная информация регулярных выражений
Функция study
Все вместе
Удаление начальных и конечных пропусков
Разделение групп разрядов запятыми
Удаление комментариев С
Поиск адресов электронной почты
Последний комментарий
Примечания, относящиеся к Реr14
Приложение А Ресурсы Интернета
Общие сведения
Виртуальная библиотека программ OAK (VSL)
Архив GNU
Yahoo!
Другие ссылки в Web
Awk
Библиотеки С
Классы Java для работы с регулярными выражениями
Egrep
Emacs
Flex
Perl
Python
Tcl
Приложение Б Программа поиска адресов электронной почты
Алфавитный указатель
Начало
Краткое содержание
Предисловие
Структура книги
Заказать книгу в магазине "Мистраль"