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

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

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

Author(s): Джеффри Фридл
Series: Бестселлеры O’REILLY
Edition: 3
Publisher: Питер
Year: 2018

Language: Russian
Commentary: True PDF
Pages: 608
City: СПб.
Tags: Regular Expressions; Java; Perl; PHP; .NET

Почему я написал эту книгу......Page 16
Для кого написана эта книга......Page 17
Структура книги......Page 18
Конкретные программы......Page 20
Условные обозначения......Page 21
Упражнения......Page 22
Личные комментарии и благодарности......Page 23
От издательства......Page 24
Глава 1. Знакомство с регулярными выражениями......Page 25
Решение реальных задач......Page 26
Аналогия с файловыми шаблонами......Page 28
Аналогия с языками......Page 29
Для читателей, имеющих опыт работы с регулярными выражениями......Page 30
Поиск в текстовых файлах: egrep......Page 31
Метасимволы egrep......Page 32
Символьные классы......Page 33
Один произвольный символ......Page 36
Выбор......Page 37
Границы слов......Page 40
В двух словах......Page 42
Необязательные элементы......Page 43
Другие квантификаторы: повторение......Page 44
Круглые скобки и обратные ссылки......Page 47
Экранирование......Page 49
Смысл регулярного выражения......Page 50
Дополнительные примеры......Page 51
Терминология регулярных выражений......Page 54
Пути к совершенствованию......Page 58
Заключение......Page 60
Личные заметки......Page 62
Глава 2. Дополнительные примеры......Page 63
О примерах......Page 64
Краткий курс Perl......Page 65
Поиск по регулярному выражению......Page 66
Побочные эффекты успешных совпадений......Page 69
Взаимодействие регулярных выражений с логикой программы......Page 72
Лирическое отступление......Page 79
Модификация текста с использованием регулярных выражений......Page 80
Пример: письмо на стандартном бланке......Page 81
Пример: обработка биржевых котировок......Page 82
Автоматизация редактирования......Page 83
Маленькая почтовая утилита......Page 84
Разделение разрядов числа запятыми......Page 91
Преобразование текста в HTML......Page 101
Задача с повторяющимися словами......Page 112
Глава 3. Регулярные выражения: возможности и диалекты......Page 118
Происхождение регулярных выражений......Page 120
На первый взгляд......Page 128
Основные операции с регулярными выражениями......Page 130
Интегрированный интерфейс......Page 131
Процедурный и объектно-ориентированный интерфейс......Page 132
Поиск с заменой......Page 136
Поиск и замена в других языках......Page 138
Строки как регулярные выражения......Page 140
Проблемы кодировки символов......Page 145
Юникод......Page 146
Режимы обработки регулярных выражений и поиска совпадений......Page 150
Стандартные метасимволы и возможности......Page 154
Представления символов......Page 156
Символьные классы и их аналоги......Page 161
Якорные метасимволы и другие проверки с нулевой длиной совпадения......Page 175
Комментарии и модификаторы режимов......Page 182
Группировка, сохранение, условные и управляющие конструкции......Page 184
Путеводитель по серьезным главам......Page 191
Два вида двигателей......Page 192
Новые стандарты......Page 193
Типы механизмов регулярных выражений......Page 194
С позиций избыточности......Page 195
Определение типа механизма......Page 196
О примерах......Page 197
Правило 1: более раннее совпадение выигрывает......Page 198
Компоненты и части двигателя......Page 199
Правило 2: квантификаторы работают максимально......Page 201
НКА: механизм, управляемый регулярным выражением......Page 204
ДКА: механизм, управляемый текстом......Page 206
Сравнение двух механизмов......Page 207
Крошечная аналогия......Page 209
Два важных замечания......Page 210
Сохраненные состояния......Page 211
Возврат и максимализм......Page 214
Проблемы максимализма......Page 217
Многосимвольные «кавычки»......Page 218
Минимальные квантификаторы......Page 219
Максимальные и минимальные конструкции всегда выбирают совпадение......Page 221
О сущности максимализма, минимализма и возврата......Page 222
Захватывающие квантификаторы и атомарная группировка......Page 223
Захватывающие квантификаторы ?+, *+, ++ и {max, min}+......Page 227
Возврат при позиционной проверке......Page 228
Максимальна ли конструкция выбора?......Page 229
Использование упорядоченного выбора......Page 230
«Самое длинное совпадение, ближнее к левому краю»......Page 233
POSIX и правило «самого длинного совпадения, ближнего к левому краю»......Page 234
Скорость и эффективность......Page 235
Сравнение ДКА и НКА......Page 237
Итоги......Page 240
Глава 5. Практические приемы построения регулярных выражений......Page 242
Снова о строках продолжения......Page 243
Поиск IP-адреса......Page 244
Работа с именами файлов......Page 247
Поиск парных скобок......Page 251
Исключение нежелательных совпадений......Page 253
Поиск текста в ограничителях......Page 254
Удаление пропусков в начале и конце строки......Page 258
Поиск тегов HTML......Page 260
Поиск ссылок HTML......Page 261
Анализ HTTP URL......Page 263
Проверка имени хоста......Page 265
Поиск URL на практике......Page 267
Синхронизация......Page 271
Разбор данных, разделенных запятыми......Page 275
Глава 6. Построение эффективных регулярных выражений......Page 283
Убедительный пример......Page 284
Простое изменение — начинаем с более вероятного случая......Page 285
Следующий шаг — локализация максимального поиска......Page 286
Возвращение к реальности......Page 289
Возврат с глобальной точки зрения......Page 291
POSIX НКА — работа продолжается......Page 292
Работа механизма при отсутствии совпадения......Page 293
Уточнение......Page 294
Хронометраж......Page 295
Хронометраж в языке PHP......Page 298
Хронометраж в языке Java......Page 299
Хронометраж в языке VB.NET......Page 301
Хронометраж в языке Ruby......Page 302
Хронометраж в языке Python......Page 303
Хронометраж в языке Tcl......Page 304
Ничто не дается бесплатно......Page 305
Механика применения регулярных выражений......Page 306
Предварительные оптимизации......Page 308
Оптимизации при смещении текущей позиции......Page 312
Оптимизации на уровне регулярных выражений......Page 314
Приемы построения быстрых выражений......Page 320
Приемы, основанные на здравом смысле......Page 322
Выделение литерального текста......Page 323
Выделение якорей......Page 324
Разделение регулярных выражений......Page 325
Имитация исключения по первому символу......Page 327
Использование атомарной группировки и захватывающих квантификаторов......Page 328
Руководство процессом поиска......Page 329
Раскрутка цикла......Page 330
Метод 1: построение регулярного выражения по результатам тестов......Page 331
Общий шаблон «раскрутки цикла»......Page 333
Метод 3: имена хостов Интернета......Page 337
Применение атомарной группировки и захватывающих квантификаторов......Page 339
Примеры раскрутки цикла......Page 341
Раскрутка комментариев С ......Page 343
Исключение случайных совпадений......Page 349
Управление поиском совпадения......Page 350
Управление поиском = скорость......Page 352
Свертка......Page 354
Вывод: думайте!......Page 355
Глава 7. Perl......Page 356
Регулярные выражения как компонент языка......Page 358
Диалект регулярных выражений Perl......Page 360
Регулярные выражения — операнды и литералы......Page 363
Порядок обработки литералов регулярных выражений......Page 367
Модификаторы регулярных выражений......Page 368
Реrl'измы из области регулярных выражений......Page 369
Контекст выражения......Page 370
Динамическая видимость и последствия совпадения регулярных выражений......Page 371
Специальные переменные, изменяемые при поиске......Page 376
Оператор qr/…/ и объекты регулярных выражений......Page 381
Построение и использование объектов регулярных выражений......Page 382
Просмотр содержимого объектов регулярных выражений......Page 384
Оператор поиска......Page 385
Операнд регулярное выражение......Page 386
Операнд целевой текст......Page 387
Варианты использования оператора поиска......Page 389
Интерактивный поиск — скалярный контекст с модификатором /g......Page 392
Внешние связи оператора поиска......Page 398
Операнд-замена......Page 400
Модификатор /e......Page 401
Оператор разбиения......Page 403
Простейшее разбиение......Page 404
Возвращение пустых элементов......Page 406
Специальные значения первого операнда split......Page 408
Сохраняющие круглые скобки в первом операнде split......Page 409
Специфические возможности Perl......Page 410
Применение динамических регулярных выражений для поиска вложенных конструкций......Page 412
Встроенный код......Page 415
Ключевое слово local во встроенном коде......Page 421
Встроенный код и переменные my......Page 424
Поиск вложенных конструкций......Page 426
Перегрузка литералов регулярных выражений......Page 428
Ограничения перегрузки литералов регулярных выражений......Page 431
Имитация именованного сохранения......Page 433
Проблемы эффективности в Perl......Page 435
У каждой задачи есть несколько решений......Page 436
Компиляция регулярных выражений, модификатор /о, qr/…/ и эффективность......Page 438
Предварительное копирование......Page 444
Функция study......Page 449
Хронометраж......Page 450
Отладочная информация регулярных выражений......Page 451
Последний комментарий......Page 454
Глава 8. Java......Page 456
Диалект регулярных выражений......Page 457
Поддержка конструкций \p{…} и \P{…} в Java......Page 460
Завершители строк Юникода......Page 462
Использование пакета java.util.regex......Page 463
Метод Pattern.compile()......Page 464
Метод Pattern.matcher()......Page 465
Объект Matcher......Page 466
Применение регулярного выражения......Page 468
Получение информации о результатах......Page 470
Простой поиск с заменой......Page 472
Расширенный поиск с заменой......Page 475
Поиск с заменой по месту......Page 477
Область в объекте Matcher......Page 479
Объединение методов в конвейер......Page 486
Методы для построения сканеров......Page 487
Другие методы Matcher......Page 490
Другие методы Pattern......Page 492
Метод split класса Pattern с одним аргументом......Page 493
Метод split класса Pattern с двумя аргументами......Page 494
Добавление атрибутов WIDTH и HEIGHT в теги ......Page 496
Проверка корректности HTML-кода с использованием нескольких регулярных выражений на один объект Matcher......Page 498
Разбор данных CSV......Page 499
Различия между 1.4.2 и 1.5.0......Page 502
Различия между 1.5.0 и 1.6.0......Page 504
Глава 9. .NET......Page 505
Диалект регулярных выражений .NET......Page 506
Замечания по поводу диалекта .NET......Page 510
Основные принципы работы с регулярными выражениями......Page 515
Общие сведения о пакете......Page 518
Краткая сводка основных объектов......Page 519
Основные объекты......Page 521
Создание объектов Regex......Page 522
Использование объектов Regex......Page 525
Использование объектов Match......Page 534
Использование объектов Group......Page 535
Статические вспомогательные функции......Page 536
Кэширование регулярных выражений......Page 537
Дополнительные функции......Page 538
Сборки регулярных выражений......Page 540
Поиск вложенных конструкций......Page 541
Объект Capture......Page 544
Глава 10. PHP......Page 546
Диалект регулярных выражений PHP......Page 548
Функциональный интерфейс механизма preg......Page 551
Аргумент «шаблон»......Page 552
preg_match......Page 559
preg_match_all......Page 565
preg_replace......Page 571
preg_replace_callback......Page 577
preg_split......Page 580
preg_grep......Page 586
preg_quote......Page 587
preg_regex_to_pattern......Page 588
Проверка синтаксиса неизвестного шаблона......Page 591
Поиск совпадений с вложенными круглыми скобками......Page 593
Совпадение с парой вложенных скобок......Page 596
Модификатор шаблона S: «Study»......Page 597
Разбор данных в формате CVS в PHP......Page 600
Проверка тегированных данных на корректность вложенных конструкций......Page 601