Регулярные выражения, 3-е издание
Джеффри Фридл
Книга Джеффри Фридла «Регулярные выражения» откроет перед вами секрет высокой производительности. Тщательно продуманные регулярные выражения помогут избежать долгих часов утомительной работы и решить проблемы за 15 секунд. Ставшие стандартной возможностью во многих языках программирования и популярных программных продуктах, включая Perl, PHP, Java, Python, Ruby, MySQL, VB.NET, C# (и других языках платформы .NET), регулярные выражения позволят вам автоматизировать сложную и тонкую обработку текста.
В третье издание включена информация о РНР и его мощном механизме регулярных выражений. Кроме того, обновлены и дополнены сведения о других языках программирования, включая расширенное и углубленное описание пакета java.util.regex компании Sun, при этом особое внимание уделено различиям между Java 1.4.2 и Java 1.5/1.6. Рассматривается принцип действия механизма регулярных выражений, сравниваются функциональные возможности различных языков программирования и инструментальных средств, подробно обсуждается оптимизация, которая дает основную экономию времени! Вы научитесь правильно конструировать регулярные выражения для самых разных ситуаций и сможете сразу же использовать предлагаемые ответы для выработки элегантных и экономичных практических решений широкого круга проблем. Кроме того, автор демонстрирует наиболее распространенные ошибки и показывает, как их избежать.
Издательство: Символ-Плюс, 2008 г.
ISBN 978-5-93286-121-9, 5-93286-121-5, 0-596-52812-4
Количество страниц: 608.
Содержание книги «Регулярные выражения, 3-е издание»:
- 15 Предисловие
- 24 1. Знакомство с регулярными выражениями
- 25 Решение реальных задач
- 27 Регулярные выражения как язык
- 27 Аналогия с файловыми шаблонами
- 28 Аналогия с языками
- 29 Регулярные выражения как особый склад ума
- 29 Для читателей, имеющих опыт работы с регулярными выражениями
- 30 Поиск в текстовых файлах: egrep
- 31 Метасимволы egrep
- 32 Начало и конец строки
- 32 Символьные классы
- 35 Один произвольный символ
- 37 Выбор
- 39 Игнорирование различий в регистре символов
- 39 Границы слов
- 40 В двух словах
- 42 Необязательные элементы
- 43 Другие квантификаторы: повторение
- 45 Круглые скобки и обратные ссылки
- 47 Экранирование
- 48 Новые горизонты
- 48 Языковая диверсификация
- 49 Смысл регулярного выражения
- 49 Дополнительные примеры
- 52 Терминология регулярных выражений
- 56 Пути к совершенствованию
- 58 Итоги
- 59 Личные заметки
- 61 2. Дополнительные примеры
- 62 О примерах
- 63 Краткий курс Perl
- 64 Поиск по регулярному выражению
- 66 Переходим к реальным примерам
- 67 Побочные эффекты успешных совпадений
- 70 Взаимодействие регулярных выражений с логикой программы
- 76 Лирическое отступление
- 77 Модификация текста с использованием регулярных выражений
- 78 Пример: письмо на стандартном бланке
- 79 Пример: обработка биржевых котировок
- 80 Автоматизация редактирования
- 81 Маленькая почтовая утилита
- 88 Разделение разрядов числа запятыми
- 97 Преобразование текста в HTML
- 108 Задача с повторяющимися словами
- 62 О примерах
- 114 3. Регулярные выражения: возможности и диалекты
- 116 История регулярных выражений
- 116 Происхождение регулярных выражений
- 123 На первый взгляд
- 126 Основные операции с регулярными выражениями
- 127 Интегрированный интерфейс
- 127 Процедурный и объектно-ориентированный интерфейс
- 131 Поиск с заменой
- 133 Поиск и замена в других языках
- 135 Итоги
- 135 Строки, кодировки и режимы
- 135 Строки как регулярные выражения
- 140 Проблемы кодировки символов
- 141 Юникод
- 145 Режимы обработки регулярных выражений и поиска совпадений
- 149 Стандартные метасимволы и возможности
- 151 Представления символов
- 155 Символьные классы и их аналоги
- 169 Якорные метасимволы и другие проверки с нулевой длиной совпадения
- 176 Комментарии и модификаторы режимов
- 178 Группировка, сохранение, условные и управляющие конструкции
- 184 Путеводитель по серьезным главам
- 116 История регулярных выражений
- 186 4. Механика обработки регулярных выражений
- 186 Запустить двигатели!
- 186 Два вида двигателей
- 187 Новые стандарты
- 188 Типы механизмов регулярных выражений
- 189 С позиций избыточности
- 190 Определение типа механизма
- 191 Основы поиска совпадений
- 191 О примерах
- 191 Правило 1: более раннее совпадение выигрывает
- 192 Компоненты и части двигателя
- 195 Правило 2: квантификаторы работают максимально
- 198 Механизмы регулярных выражений
- 198 НКА: механизм, управляемый регулярным выражением
- 200 ДКА: механизм, управляемый текстом
- 200 Сравнение двух механизмов
- 202 Возврат
- 202 Крошечная аналогия
- 204 Два важных замечания
- 204 Сохраненные состояния
- 207 Возврат и максимализм
- 209 Подробнее о максимализме и о возврате
- 210 Проблемы максимализма
- 211 Многосимвольные «кавычки»
- 212 Минимальные квантификаторы
- 213 Максимальные и минимальные конструкции всегда выбирают совпадение
- 215 О сущности максимализма, минимализма и возврата
- 216 Захватывающие квантификаторы и атомарная группировка
- 219 Захватывающие квантификаторы ?+, *+, ++ и {max,min}+
- 220 Возврат при позиционной проверке
- 222 Максимальна ли конструкция выбора?
- 223 Использование упорядоченного выбора
- 225 НКА, ДКА и POSIX
- 225 «Самое длинное совпадение, ближнее к левому краю»
- 226 POSIX и правило «самого длинного совпадения, ближнего к левому краю»
- 227 Скорость и эффективность
- 229 Сравнение ДКА и НКА
- 232 Итоги
- 186 Запустить двигатели!
- 234 5. Практические приемы построения регулярных выражений
- 235 Балансировка регулярных выражений
- 235 Несколько коротких примеров
- 235 Снова о строках продолжения
- 236 Поиск IP-адреса
- 239 Работа с именами файлов
- 243 Поиск парных скобок
- 245 Исключение нежелательных совпадений
- 246 Поиск текста в ограничителях
- 249 Данные и предположения
- 250 Удаление пропусков в начале и конце строки
- 251 Работа с HTML
- 251 Поиск тегов HTML
- 253 Поиск ссылок HTML
- 255 Анализ HTTP URL
- 255 Проверка имени хоста
- 258 Поиск URL на практике
- 262 Нетривиальные примеры
- 262 Синхронизация
- 266 Разбор данных, разделенных запятыми
- 274 6. Построение эффективных регулярных выражений
- 275 Убедительный пример
- 276 Простое изменение - начинаем с более вероятного случая
- 277 Эффективность и правильность
- 277 Следующий шаг - локализация максимального поиска
- 279 Возвращение к реальности
- 282 Возврат с глобальной точки зрения
- 283 POSIX НКА - работа продолжается
- 283 Работа механизма при отсутствии совпадения
- 284 Уточнение
- 285 Конструкция выбора может дорого обойтись
- 286 Хронометраж
- 288 Зависимость результатов хронометража от данных
- 288 Хронометраж в языке РНР
- 289 Хронометраж в языке Java
- 291 Хронометраж в языке VB.NET
- 292 Хронометраж в языке Ruby
- 293 Хронометраж в языке Python
- 293 Хронометраж в языке Tel
- 294 Стандартные оптимизации
- 295 Ничто не дается бесплатно
- 296 Универсальных истин не бывает
- 296 Механика применения регулярных выражений
- 297 Предварительные оптимизации
- 301 Оптимизации при смещении текущей позиции
- 303 Оптимизации на уровне регулярных выражений
- 309 Приемы построения быстрых выражений
- 310 Приемы, основанные на здравом смысле
- 312 Выделение литерального текста
- 312 Выделение якорей
- 313 Выбор между минимальными и максимальными квантификаторами
- 314 Разделение регулярных выражений
- 316 Имитация исключения по первому символу
- 317 Использование атомарной группировки и захватывающих квантификаторов
- 317 Руководство процессом поиска
- 319 Раскрутка цикла
- 320 Метод 1: построение регулярного выражения по результатам тестов
- 322 Общий шаблон «раскрутки цикла»
- 325 Метод 2: структурный анализ
- 325 Метод 3: имена хостов Интернета
- 327 Замечания
- 327 Применение атомарной группировки и захватывающих квантификаторов
- 329 Примеры раскрутки цикла
- 331 Раскрутка комментариев С
- 337 Исключение случайных совпадений
- 337 Управление поиском совпадения
- 339 Управление поиском — скорость
- 341 Свертка
- 342 Вывод: думайте!
- 275 Убедительный пример
- 343 7. Perl
- 345 Регулярные выражения как компонент языка
- 346 Самая сильная сторона Perl
- 347 Самая слабая сторона Perl
- 347 Диалект регулярных выражений Perl
- 350 Регулярные выражения - операнды и литералы
- 354 Порядок обработки литералов регулярных выражений
- 354 Модификаторы регулярных выражений
- 355 Perl'измы из области регулярных выражений
- 356 Контекст выражения
- 357 Динамическая видимость и последствия совпадения регулярных выражений
- 362 Специальные переменные, изменяемые при поиске
- 366 Оператор qr/.../ и объекты регулярных выражений
- 367 Построение и использование объектов регулярных выражений
- 369 Просмотр содержимого объектов регулярных выражений
- 370 Объекты регулярных выражений и повышение эффективности
- 370 Оператор поиска
- 370 Операнд регулярное выражение
- 372 Операнд целевой текст
- 374 Варианты использования оператора поиска
- 377 Интерактивный поиск - скалярный контекст с модификатором /g
- 382 Внешние связи оператора поиска
- 383 Оператор подстановки
- 384 Операнд-замена
- 385 Модификатор /е
- 386 Контекст и возвращаемое значение
- 386 Оператор разбиения
- 387 Простейшее разбиение
- 389 Возвращение пустых элементов
- 390 Специальные значения первого операнда split
- 392 Сохраняющие круглые скобки в первом операнде split
- 392 Специфические возможности Perl
- 394 Применение динамических регулярных выражений для поиска вложенных конструкций
- 397 Встроенный код
- 402 Ключевое слово local во встроенном коде
- 405 Встроенный код и переменные ту
- 407 Поиск вложенных конструкций
- 409 Перегрузка литералов регулярных выражений
- 412 Ограничения перегрузки литералов регулярных выражений
- 413 Имитация именованного сохранения
- 416 Проблемы эффективности в Perl
- 417 У каждой задачи есть несколько решений
- 418 Компиляция регулярных выражений, модификатор /о, qr/.../ и эффективность
- 425 Предварительное копирование
- 429 Функция study
- 431 Хронометраж
- 431 Отладочная информация регулярных выражений
- 434 Последний комментарий
- 345 Регулярные выражения как компонент языка
- 436 8. Java
- 438 Диалект регулярных выражений
- 441 Поддержка конструкций р{...} и Р{...} в Java
- 442 Завершители строк Юникода
- 443 Использование пакета Java.util.regex
- 444 Метод Pattern.compile()
- 445 Метод Pattern,matcher()
- 446 Объект Matcher
- 448 Применение регулярного выражения
- 449 Получение информации о результатах
- 451 Простой поиск с заменой
- 454 Расширенный поиск с заменой
- 456 Поиск с заменой по месту
- 457 Область в объекте Matcher
- 463 Объединение методов в конвейер
- 464 Методы для построения сканеров
- 468 Другие методы Matcher
- 470 Другие методы Pattern
- 471 Метод split класса Pattern с одним аргументом
- 472 Метод split класса Pattern с двумя аргументами
- 473 Дополнительные примеры
- 473 Добавление атрибутов WIDTH и HEIGHT в теги <img>
- 475 Проверка корректности HTML-кода с использованием нескольких регулярных выражений на один объект Matcher
- 476 Разбор данных CSV
- 477 Различия между версиями Java
- 477 Различия между 1.4.2 и 1.5.0
- 480 Различия между 1.5.0 и 1.6.0
- 438 Диалект регулярных выражений
- 481 9. .NET
- 482 Диалект регулярных выражений .NET
- 485 Замечания по поводу диалекта .NET
- 490 Использование регулярных выражений в .NET
- 490 Основные принципы работы с регулярными выражениями
- 492 Общие сведения о пакете
- 494 Краткая сводка основных объектов
- 496 Основные объекты
- 496 Создание объектов Regex
- 499 Использование объектов Regex
- 507 Использование объектов Match
- 508 Использование объектов Group
- 509 Статические вспомогательные функции
- 510 Кэширование регулярных выражений
- 511 Дополнительные функции
- 513 Нетривиальные возможности .NET
- 513 Сборки регулярных выражений
- 515 Поиск вложенных конструкций
- 516 Объект Capture
- 482 Диалект регулярных выражений .NET
- 519 10. PHP
- 521 Диалект регулярных выражений РНР
- 524 Функциональный интерфейс механизма preg
- 525 Аргумент «шаблон»
- 531 Функции preg
- 536 preg_match_all
- 542 preg_replace
- 548 preg_replace_callback
- 551 preg_split
- 556 preg_grep
- 557 preg_quote
- 558 «Недостающие» функции preg
- 558 preg_regex_to_pattern
- 561 Проверка синтаксиса неизвестного шаблона
- 562 Проверка синтаксиса неизвестного регулярного выражения
- 563 Рекурсивные регулярные выражения
- 563 Поиск совпадений с вложенными круглыми скобками
- 566 Никаких возвратов в рекурсии
- 566 Совпадение с парой вложенных скобок
- 566 Вопросы эффективности в РНР
- 567 Модификатор шаблона S: «Study»
- 569 Расширенные примеры
- 569 Разбор данных в формате CVS в РНР
- 570 Проверка тегированных данных на корректность вложенных конструкций
- 575 Алфавитный указатель
Инструкция как скачать книгу Джеффри Фридл: Регулярные выражения, 3-е издание в форматах DjVu, PDF, DOC или fb2 совершенно бесплатно.