Регулярные выражения. 3 изд

Регулярные выражения. 3 изд

Регулярные выражения. 3 изд
Автор: Фридли Джеффри
Дата выхода: 2018
Издательство: «Питер»
Количество страниц: 608
Размер файла: 4,8 МБ
Тип файла: PDF
Добавил: katyaprogamer
 Проверить на вирусы

Предисловие

Почему я написал эту книгу 

Для кого написана эта книга 

Как читать эту книгу

Структура книги

Подробное описание 

Информация по инструментам

Условные обозначения

Упражнения

Ссылки, программный код, ошибки и контакты

Личные комментарии и благодарности

От издательства

Глава 1. Знакомство с регулярными выражениями 

Решение реальных задач

Регулярные выражения как язык

Аналогия с файловыми шаблонами

Аналогия с языками

Регулярные выражения как особый склад ума

Для читателей, имеющих опыт работы с регулярными выражениями

Поиск в текстовых файлах: egrep

Метасимволы egrep

Начало и конец строки

Символьные классы

Один произвольный символ

Выбор

Игнорирование различий в регистре символов 

Границы слов

В двух словах

Необязательные элементы

Другие квантификаторы: повторение

Круглые скобки и обратные ссылки

Экранирование

Новые горизонты

Языковая диверсификация

Смысл регулярного выражения

Дополнительные примеры

Терминология регулярных выражений

Пути к совершенствование

Заключение

Личные заметки

Глава 2. Дополнительные примеры

О примерах

Краткий курс Perl

Поиск по регулярному выражению

Переходим к реальным примерам

Побочные эффекты успешных совпадений

Взаимодействие регулярных выражений с логикой программы

Лирическое отступление

Модификация текста с использованием регулярных выражений

Пример: письмо на стандартном бланке

Пример: обработка биржевых котировок

Автоматизация редактирования 

Маленькая почтовая утилита

Разделение разрядов числа запятыми

Преобразование текста в HTML

Задача с повторяющимися словами

Глава 3. Регулярные выражения: возможности и диалекты

История регулярных выражений

Происхождение регулярных выражений

На первый взгляд

Основные операции с регулярными выражениями

Интегрированный интерфейс

Процедурный и объектно-ориентированный интерфейс

Поиск с заменой

Поиск и замена в других языках

Итоги

Строки, кодировки и режимы

Строки как регулярные выражения

Проблемы кодировки символов

Юникод

Режимы обработки регулярных выражений и поиска совпадений

Стандартные метасимволы и возможности

Представления символов

Символьные классы и их аналоги

Якорные метасимволы и другие проверки с нулевой длиной совпадения

Комментарии и модификаторы режимов

Группировка, сохранение, условные и управляющие конструкции

Путеводитель по серьезным главам

Глава 4. Механика обработки регулярных выражений

Запустить двигатели!

Два вида двигателей

Новые стандарты

Типы механизмов регулярных выражений

С позиций избыточности

Определение типа механизма

Основы поиска совпадений

О примерах

Правило 1: более раннее совпадение выигрывает

Компоненты и части двигателя  

Правило 2: квантификаторы работают максимально 

Механизмы регулярных выражений 

НКА: механизм, управляемый регулярным выражением

ДКА: механизм, управляемый текстом 

Сравнение двух механизмов

Возврат 

Крошечная аналогия

Два важных замечания 

Сохраненные состояния  

Возврат и максимализм  

Подробнее о максимализме и о возврате  

Проблемы максимализма

Многосимвольные «кавычки»

Минимальные квантификаторы 

Максимальные и минимальные конструкции всегда выбирают совпадение 

О сущности максимализма, минимализма и возврата  

Захватывающие квантификаторы и атомарная группировка 

Захватывающие квантификаторы ?+, *+, ++ и {max, min}+

Возврат при позиционной проверке  

Максимальна ли конструкция выбора?

Использование упорядоченного выбора

НКА, ДКА и POSIX

«Самое длинное совпадение, ближнее к левому краю»  

POSIX и правило «самого длинного совпадения, ближнего к левому краю»  

Скорость и эффективность 

Сравнение ДКА и НКА

Итоги 

Глава 5. Практические приемы построения регулярных выражений 

Балансировка регулярных выражений

Несколько коротких примеров 

Снова о строках продолжения

Поиск IP-адреса  

Работа с именами файлов 

Поиск парных скобок 

Исключение нежелательных совпадений 

Поиск текста в ограничителях 

Данные и предположения

Удаление пропусков в начале и конце строки

Работа с HTML  

Поиск тегов HTML 

Поиск ссылок HTML 

Анализ HTTP URL  

Проверка имени хоста 

Поиск URL на практике

Нетривиальные примеры

Синхронизация 

Разбор данных, разделенных запятыми

Глава 6. Построение эффективных регулярных выражений

Убедительный пример 

Простое изменение — начинаем с более вероятного случая  

Эффективность и правильность

Следующий шаг — локализация максимального поиска

Возвращение к реальности 

Возврат с глобальной точки зрения

POSIX НКА — работа продолжается

Работа механизма при отсутствии совпадения 

Уточнение 

Конструкция выбора может дорого обойтись

Хронометра

Зависимость результатов хронометража от данных 

Хронометраж в языке PHP 

Хронометраж в языке Java 

Хронометраж в языке VB.NET 

Хронометраж в языке Ruby 

Хронометраж в языке Python 

Хронометраж в языке Tcl 

Стандартные оптимизации 

Ничто не дается бесплатно 

Универсальных истин не бывает

Механика применения регулярных выражений 

Предварительные оптимизации  

Оптимизации при смещении текущей позиции 

Оптимизации на уровне регулярных выражений

Приемы построения быстрых выражений 

Приемы, основанные на здравом смысле

Выделение литерального текста 

Выделение якорей 

Выбор между минимальными и максимальными квантификаторами 

Разделение регулярных выражений

Имитация исключения по первому символу 

Использование атомарной группировки и захватывающих квантификаторов

Руководство процессом поиска 

Раскрутка цикла

Метод 1: построение регулярного выражения по результатам тестов

Общий шаблон «раскрутки цикла» 

Метод 2: структурный анализ

Метод 3: имена хостов Интернета

Замечания

Применение атомарной группировки и захватывающих квантификаторов 

Примеры раскрутки цикла 

Раскрутка комментариев С 

Исключение случайных совпадений 

Управление поиском совпадения 

Управление поиском = скорость 

Свертка 

Вывод: думайте! 

Глава 7. Perl 

Регулярные выражения как компонент языка

Самая сильная сторона Perl 

Самая слабая сторона Perl

Диалект регулярных выражений Perl

Регулярные выражения — операнды и литералы 

Порядок обработки литералов регулярных выражений

Модификаторы регулярных выражений 

Реrl'измы из области регулярных выражений 

Контекст выражения

Динамическая видимость и последствия совпадения регулярных выражений 

Специальные переменные, изменяемые при поиске

Оператор qr/…/ и объекты регулярных выражений

Построение и использование объектов регулярных выражений

Просмотр содержимого объектов регулярных выражений

Объекты регулярных выражений и повышение эффективности

Оператор поиска 

Операнд регулярное выражение 

Операнд целевой текст

Варианты использования оператора поиска 

Интерактивный поиск — скалярный контекст с модификатором /g

Внешние связи оператора поиска 

Оператор подстановки 

Операнд-замена

Модификатор /e  

Контекст и возвращаемое значение

Оператор разбиения

Простейшее разбиение 

Возвращение пустых элементов 

Специальные значения первого операнда split 

Сохраняющие круглые скобки в первом операнде split  

Специфические возможности Perl 

Применение динамических регулярных выражений для поиска вложенных конструкций  

Встроенный код  

Ключевое слово local во встроенном коде

Встроенный код и переменные my 

Поиск вложенных конструкций 

Перегрузка литералов регулярных выражений 

Ограничения перегрузки литералов регулярных выражений 

Имитация именованного сохранения  

Проблемы эффективности в Perl

У каждой задачи есть несколько решений  

Компиляция регулярных выражений, модификатор /о, qr/…/ и эффективность

Предварительное копирование 

Функция study

Хронометраж

Отладочная информация регулярных выражений

Последний комментарий

Глава 8. Java 

Диалект регулярных выражений 

Поддержка конструкций \p{…} и \P{…} в Java

Завершители строк Юникода 

Использование пакета java.util.regex 

Метод Pattern.compile() 

Метод Pattern.matcher()

Объект Matcher 

Применение регулярного выражения

Получение информации о результатах

Простой поиск с заменов

Расширенный поиск с заменой 

Поиск с заменой по месту 

Область в объекте Matcher 

Объединение методов в конвейер 

Методы для построения сканеров

Другие методы Matcher 

Другие методы Pattern

Метод split класса Pattern с одним аргументов

Метод split класса Pattern с двумя аргументами

Дополнительные примеры 

Добавление атрибутов WIDTH и HEIGHT в теги <img>

Проверка корректности HTML-кода с использованием нескольких

регулярных выражений на один объект Matcher 

Разбор данных CSV 

Различия между версиями Java

Различия между 1.4.2 и 1.5.0 

Различия между 1.5.0 и 1.6.0

Глава 9. .NET 

Диалект регулярных выражений .NET

Замечания по поводу диалекта .NET

Использование регулярных выражений в  .NET 

Основные принципы работы с регулярными выражениями

Общие сведения о пакете

Краткая сводка основных объектов

Основные объекты

Создание объектов Regex

Использование объектов Regex

Использование объектов Match

Использование объектов Group 

Статические вспомогательные функции

Кэширование регулярных выражений

Дополнительные функции

Нетривиальные возможности .NE

Сборки регулярных выражений

Поиск вложенных конструкций

Объект Capture

Глава 10. PHP

Диалект регулярных выражений PHP

Функциональный интерфейс механизма preg

Аргумент «шаблон»

Функции preg

preg_match

preg_match_all

preg_replace 

preg_replace_callback

preg_split

preg_grep

preg_quote

«Недостающие» функции preg

preg_regex_to_pattern

Проверка синтаксиса неизвестного шаблона

Проверка синтаксиса неизвестного регулярного выражения

Рекурсивные регулярные выражения

Поиск совпадений с вложенными круглыми скобками

Никаких возвратов в рекурсии

Совпадение с парой вложенных скобок

Вопросы эффективности в PHP

Модификатор шаблона S: «Study»

Расширенные примеры

Разбор данных в формате CVS в PHP

Проверка тегированных данных на корректность вложенных конструкций

Вы никогда не пользовались регулярными выражениями? Откройте мир regex, и станьте профессионалом, способным эффективно работать с данными в Java, JavaScript, C, C++, C#, Perl, Python, Ruby, PHP и других языках программирования. Международный бестселлер знакомит с фундаментальными основами регулярных выражений, функциональными возможностями языков программирования и позволяет оптимизировать работу с информацией. Вы научитесь самостоятельно конструировать регулярные выражения и использовать приведенные в книге примеры для быстрого решения самых актуальных задач.


Похожее:

Список отзывов:

Нет отзывов к книге.