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

Джеффи Фридл

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

Рассматриваются Perl, PHP, Java, Ruby и др.

Издательство «Символ-Плюс», Санкт-Петербург, 2008, 608 стр., тираж 2000 ISBN: 5-93286-121-5. Перевод с англ. Е.Матвеева и А.Киселева, научный редактор Б. Попов

 

Аннотация от издательства

http://www.symbol.ru/alphabet/592346.html

 

Оригинал: “Mastering Regular Expressions. Third Edition”, by Jeffrey E.F.Friedl; O’REILLY, 2006, 542 р., ISBN: 0-596-52812-4(англ.)

Категория: Программирование/Программирование
Уровень подготовки читателей: Средний

 

Регулярные выражения — система синтаксического разбора текстовых фрагментов по формализованному шаблону, основанная на системе записи образцов для поиска. Образец (pattern), задающий правило поиска, по-русски также иногда называют «шаблоном», «маской». Регулярные выражения произвели прорыв в электронной обработке текста в конце XX века. Они являются развитием символов-джокеров.

Викпедия

-----------********-----------********-----------

Понимание данных –
ключ к высокой эффективности

Джеффи Фридл

Многие используют регулярные выражения
в весьма ограниченном объеме, будучи не в состоянии
заставить работать сколько-нибудь сложные выражения.

Из отзыва одного из читателей

На энциклопедию или технический справочник очень сложно написать рецензию. Сравнивать практически не с чем, а пересказывать содержимое – это попытаться процитировать всю много-много страничную книгу в рамках журнальной рецензии. Не самое благодарное занятие, и уж совсем незахватывающее чтение. А предлагаемая вниманию читателей нашего журнала книга Джеффи Фридла «Регулярные выражения» стоит того, чтобы о ней знали, как можно больше программистов, сисадминов различных операционных систем, администраторов самых разных баз данных, начиная с Oracle (но об этом чуть позже). Поскольку она является и энциклопедией, и справочником, и учебником в том числе и в одном лице. И единственным в своем направлении фундаментальным источником информации на русском языке (по крайней мере по моим розыскам в русском Интернете).

Стоит начать с приводимого на сайте изд. «Символ-Плюс» мнения анонимного (наверняка, англо) читателя «Больше, чем я ожидал» этой книги, наиболее полно отразившего и мое [А.Б.] мнение о «Регулярных выражениях» Джеффи Фридла:

"Я занимаюсь разработкой программного обеспечения уже более 7 лет и только в последний год по-настоящему начал использовать регулярные выражения. Конечно, можно обойтись и без регулярных выражений, но, владея ими, вы поднимаетесь на более высокий профессиональный уровень. Программный код становится лаконичным, и читать такой код – одно удовольствие. Я не читал книгу полностью, поскольку в последних главах рассматриваются особенности, характерные для определенных языков программирования, таких как Java, Perl, PHP и других… Первые преимущества я стал извлекать уже после прочтения первой главы. Работать стало намного легче.
Книгу стоит купить уже ради первых трех глав. Автор в превосходной манере объясняет читателю, что происходит за кулисами, и учит, как правильно конструировать регулярные выражения для самых разных ситуаций…"

Хочу обратить внимание на заявление читателя: «Я не читал книгу полностью…». Тем самым рекламный слоган «Рассматриваются Perl, PHP, Java, Ruby и др.» в надзаголовке на обложке книги несколько (даже сильно) сужает полноту ее содержания и круг потенциальных читателей и пользователей. Но, надеюсь, наши читатели сначала посмотрят содержание книги, которое по традиции публикуется в конце этой статьи, правильно разберутся :) с надзаголовком и больше поверят такому аргументу: «Первые преимущества я стал извлекать уже после прочтения первой главы». Поэтому я приведу мнение самого автора по поводу «Для кого написана эта книга»:

«Программисты, занимающиеся обработкой текста (например, веб-программированием), найдут здесь многочисленные технические подробности, рекомендации, советы, а главное – осознают новые возможности, которые можно немедленно применить на практике. Столь подробного и скрупулезного изложения материала вы просто не найдете в других источниках».

Что верно, то верно! Оценить же объем представленного в книге материала вам поможет ее Index так любезно опубликованный изд. O’REILLY на своем сайте - http://oreilly.com/catalog/9780596528126/inx.pdf. С удовольствием отмечу, что при подготовке отечественного издания этот индекс хорошо переведен и соответствует формату книги на русском языке. Если уж речь зашла о дополнительных материалах к «Регулярным выражениям» Джеффи Фридла, надо упомянуть выложенный на сайте изд. «Символ-Плюс» перевод главы 5 «Практические примеры регулярных выражений» (стр. 234 - 273) (см. Приложение2) и оригинал главы 4 «The Mechanics of Expression Processing», выложенный на сайте изд. O’REILLY по адресу http://oreilly.com/catalog/regex3/chapter/ch04.pdf. Спасибо за такой щедрый подарок!

С точки зрения новичка, наиболее важной для него является первая глава «Знакомство с регулярными выражениями», где читатель на примере имеющейся во всех UNIX-подобных системах команды egrep знакомится с концепциями. И хотя по мнению автора опытные пользователи могут пропустить первые три главы, он, Дж. Фридл, настоятельно рекомендует познакомиться с главой 3 «самым закаленным ветеранам». Потом идут главы 4 и 5, с которыми можно разобраться предварительно, а дальше после главы 6 «Построение эффективных регулярных выражений» читатель или сам не оторвется от этой захватывающей книги, или отложит уважительно в сторону до тех пор, пока ему не придется профессионально столкнуться с применением Perl, Java, .NET, PHP и др., и др.

Теперь попробуем разобраться с «проблемой» Oracle и Регулярные выражения. Очень может быть (или кто-нибудь подскажет автору), что в следующем издании «Регулярных выражениях» Джеффи Фридл включит главу и о регулярных выражениях применительно именно к Oracle. Ведь расширял же он свой классический труд от одного издания к следующему: I издание - январь 1997г. 368 стр.; II издание - июль 2002г. 484 стр.; III издание – август 2006г. 542 стр. Но этого, а потом еще и перевода на русский язык ждать долго. Поэтому отметим, что в недавно изданной на русском языке книге (М:, «ЛОРИ», 2007, 418 стр.) Р. Хардмана и М. МакЛафлина «Oracle PL/SQL для профессионалов» глава 10 содержит «Введение в регулярные выражения», в этом выпуске журнала перепечатывается давний (2004г.) перевод статьи Алисы Ришет (Alice Rischert) «Регулярные выражения, усовершенствующие SQL-предложения» (Writing Better SQL Using Regular Expressions). К сожалению, ни на сайте www.oracle.com, ни на сайте нашего журнала ни самой статьи, ни ее перевода уже нет, а, как мне представляется, представленная информация остается актуальной, поскольку регулярные выражения только добавляются со временем и расширением программного мира. Поэтому я включил давний перевод в этот новогодний выпуск. На языке же оригинала статей на тему «Oracle & Regular Expressions» много, стоит только поискать. Например, «Using Regular Expressions» (изучим за 30 минут - применительно к Oracle10g).

Анатолий Бачин,
главный редактор “Oracle Magazine/Русское Издание”

Приложение1. Оглавление книги «Регулярные выражения»
Предисловие

  1. Знакомство с регулярными выражениями
  2. Дополнительные примеры
  3. Регулярные выражения: возможности и диалекты
  4. Механика обработки регулярных выражений
  5. Практические примеры регулярных выражений
  6. Построение эффективных регулярных выражений
  7. Perl
  8. Java
  9. .NET
  10. PHP
Алфавитный указатель

Приложение 2. Содержание глав 5 («Практические примеры регулярных выражений» (стр. 234 - 273), выложенной в свободном доступе по адресу: http://www.books.ru/chapter?id=592346.

  • Балансировка регулярных выражений
  • Несколько коротких примеров
    • Снова о строках продолжения
    • Поиск IP-адреса
    • Работа с именами файлов
    • Поиск парных скобок
    • Исключение нежелательных совпадений
    • Поиск текста в ограничителях
    • Данные и предположения
    • Удаление пропусков в начале и конце строки
  • Работа с HTML
    • Поиск тегов HTML
    • Поиск ссылок HTML
    • Анализ HTTP URL
    • Проверка имени хоста
    • Поиск URL на практике
  • Нетривиальные примеры
    • Синхронизация
    • Разбор данных, разделенных запятыми
E-mail this page