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

Выделение адресов

Как найти в тексте URL и преобразовать его в гиперссылку

Поиск и выделение ссылок в тексте — очень распространенная задача. Например, это требуется в веб-форумах или в системах автоматической публикации. Программа должна принять некоторый текст, отыскать в нем URL-адреса, и преобразовать их в соответствующий набор тегов. Алгоритм нечувствителен к адресам, которые уже оформлены как HTML-гиперссылки.

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

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

Поддержка регулярных выражений очень полезна в CGI-программировании. В C++ отсутствуют встроенные механизмы для работы с ними. Разработчик, однако, может воспользоваться библиотекой Perl Compatible Regular Expressions (PCRE).

Локаль в PCRE

Как построить локаль для правильной работы функций PCRE

Как организовать работу библиотеки с текстами на русском языке. Одна из первоочередных задач — обеспечить правильную работу функций с игнорированием регистра символов.

Знаки препинания в списках

Расстановка тире и запятых в последовательностях целых чисел

Описанная здесь функция правильно расставит пробелы, запятые и тире в списках целых чисел. Например, если передать функции массив, содержащий значения 1, 2, 3, 4, 6, 7, 8, она возвратит строку 1—4, 6—8.

Ножом по длинным словам

Как не дать словам-максималистам нарушить дизайн страницы

Любой браузер, встретив длинное слово, постарается разместить его на одной строке. Когда такое слово появляется внутри ячейки таблицы, дизайн страницы может пострадать, а в окне браузера появится горизонтальная полоса прокрутки. Если на статических html-страницах с длинными словами еще можно бороться вручную на стадии подготовки текста, то в интерактивном сайте контроль за расстановкой переносов лучше поручить серверному скрипту. Типичный пример, когда такой скрипт крайне желателен — веб-форум, сообщения в котором размещены в таблицах.

Полосатая таблица

И немного о функциях в регулярных выражениях

Чтение html-таблицы

Как преобразовать таблицу в массив

Разбор строки запроса

Как выделить из строки запроса параметры и их значения

Шаблоны для веб-типографики

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

Обратный отсчет дней

И кое-что о регулярных выражениях

Правка адресов

Как изменить адреса на странице, превратив их в параметры некоторого веб-приложения

Фильтр тегов I

С сохранением всех атрибутов

Фильтр тегов II

С произвольной фильтрацией атрибутов

Расстановка неразрывных пробелов и тире

Или автоматическая типографика

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

Онлайновый редактор регулярных выражений (Java-апплет).

Зачем?

Ответ на вопрос «Применять регулярные выражения или нет?» зависит не только от задачи, но и от наличия опыта. Регулярные выражения — не самое простое из того, что есть в программировании. И не всегда сразу легко разобраться в сложной конструкции. Но как бы там ни было, есть задачи, которые можно решить с помощью регулярных выражений на порядок быстрее.

На бумаге

В 2003 году вышло второе издание уникальной книги Дж. Фридла о регулярных выражениях. Объем книги вырос почти на сто страниц: появились две главы, в которых рассказано о механизмах работы с регулярными выражениями в Java и .NET. Заметно изменилось содержание и порядок примеров в главах 5 и 6. Однако из книги пропал раздел, в котором было построено регулярное выражение для поиска адресов электронной почты.

В действии

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

«Автотипографика» — расставляет кавычки, тире, неразрывные пробелы, подготавливая текст к публикации в интернете или на бумаге

Выделение адресов — поиск URL и преобразование их в гиперссылки

Фильтр HTML-кода — борьба с отступами в начале строк, пустыми строками и последовательностями пробелов

Фильтр тегов умеет фильтровать html-теги и их атрибуты. Что и как фильтровать, вы выбираете сами

Типографика списков — расстановка тире и запятых в последовательностях целых чисел

В будущем

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

Дистрибутив Parrot содержит несколько примеров, описывающих работу с регулярными выражениями в Perl 6. На сайте perl6.ru разобраны несколько из них и показаны отличия от синтаксиса регулярных выражений Perl 5.

Разбор примеров

Группирующие скобки

Квантификаторы

Именованные правила

Анонимные правила

Нерассмотренные примеры

2002—2007 /^20{2}[2-7]$/
Андрей Шитов | andy@shitov.ru