Регулярные выражения, 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 Задача с повторяющимися словами
  • 114 3. Регулярные выражения: возможности и диалекты
    • 116 История регулярных выражений
      • 116 Происхождение регулярных выражений
      • 123 На первый взгляд
    • 126 Основные операции с регулярными выражениями
      • 127 Интегрированный интерфейс
      • 127 Процедурный и объектно-ориентированный интерфейс
      • 131 Поиск с заменой
      • 133 Поиск и замена в других языках
      • 135 Итоги
    • 135 Строки, кодировки и режимы
      • 135 Строки как регулярные выражения
      • 140 Проблемы кодировки символов
      • 141 Юникод
      • 145 Режимы обработки регулярных выражений и поиска совпадений
    • 149 Стандартные метасимволы и возможности
      • 151 Представления символов
      • 155 Символьные классы и их аналоги
      • 169 Якорные метасимволы и другие проверки с нулевой длиной совпадения
      • 176 Комментарии и модификаторы режимов
      • 178 Группировка, сохранение, условные и управляющие конструкции
    • 184 Путеводитель по серьезным главам
  • 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 Итоги
  • 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 Вывод: думайте!
  • 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 Последний комментарий
  • 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
  • 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
  • 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 совершенно бесплатно.
Регулярные выражения, 3-е издание
Рейтинг книги:
4 голоса
421

Поиск книг:




При поиске учитываются только слова, длина которых больше 3-х символов.

Статистика: