Программирование на языке Ruby
Шрифт:
3.13.2. Сборка Oniguruma
Если в вашу версию библиотека Oniguruma не включена, можете самостоятельно откомпилировать Ruby и скомпоновать
Получить исходный текст Oniguruma можно из архива приложений Ruby RAA или найти в другом месте. Исходные тексты Ruby, естественно, находятся на официальном сайте.
Если вы работаете на платформе UNIX (в том числе в среде Cygwin в Windows или Mac OS/X), выполните следующие действия:
1.
2.
3.
4.
5. Одно из следующих:
6.
7.
8.
9.
10.
11.
12.
Или:
Если же вы работаете на платформе Win32, скажем в Windows XP, то потребуются Visual C++ и исполняемый файл patch.exe. Выполните следующие действия:
1. Распакуйте архив любой имеющейся у вас программой.
2.
3. Одно из следующих:
4. Следуйте инструкции в файле
При возникновении ошибок обратитесь в список рассылки или конференцию.
3.13.3. Некоторые новые возможности Oniguruma
Oniguruma добавляет много новых возможностей к механизму работы с регулярными выражениями в Ruby. Из самых простых отметим дополнительную управляющую последовательность для указания класса символов. Если
Добавилось возможностей у классов символов в квадратных скобках. Для организации вложенных классов можно применять оператор
А следующее выражение соответствует всему алфавиту, кроме букв от m до p:
Поскольку такие выражения выглядят не очень понятно, рекомендую пользоваться этим средством осмотрительно.
Другие возможности Oniguruma, например оглядывание назад и именованные соответствия, будут рассмотрены ниже. Все связанное с интернационализацией отложим до главы 4.
3.13.4 Позитивное и негативное оглядывание назад
Если заглядывания вперед вам недостаточно, то Oniguruma предлагает еще и оглядывание назад, позволяющее определить, предшествует ли текущему положению заданный образец.
Как и многое другое в регулярных выражениях, эту возможность довольно трудно понять и обосновать. Спасибо Эндрю Джексону за следующий пример.
Предположим, что вам нужно проанализировать некоторую генетическую последовательность (молекула ДНК состоит из четырех основных белков, которые обозначаются А, С, G и T.) Допустим, что мы ищем все неперекрывающиеся цепочки нуклеотидов (длины 4), следующие за T. Нельзя просто попытаться найти T и взять следующие четыре символа, поскольку T может быть последним символом в предыдущем соответствии.
Ho в этом коде мы пропустили цепочку
Следующий пример - небольшая модификация примера, предложенного К. Косако (К. Kosako). Предположим, что есть текст в формате XML (или HTML), и мы хотим перевести в верхний регистр весь текст вне тегов (то есть cdata) Вот как можно сделать это с помощью оглядывания назад:
Газлайтер. Том 21
21. История Телепата
Фантастика:
боевая фантастика
аниме
попаданцы
рейтинг книги
Тимбер
4. Аид
Любовные романы:
современные любовные романы
эро литература
рейтинг книги
Барон диктует правила
4. Закон сильного
Фантастика:
фэнтези
попаданцы
аниме
рейтинг книги
Кодекс Охотника. Книга XXL
41. Кодекс Охотника
Фантастика:
аниме
фэнтези
попаданцы
рейтинг книги
Оружейникъ
2. Александр Агренев
Фантастика:
альтернативная история
рейтинг книги
Дмитрий Донской. Битва за Святую Русь: трилогия
Проза:
историческая проза
рейтинг книги
Наследница солёной воды
1. Кровь и Вода
Любовные романы:
любовно-фантастические романы
рейтинг книги
Росская империя (сборник)
Росская Империя
Фантастика:
боевая фантастика
рейтинг книги
Погоня за судьбой
Детективы:
триллеры
рейтинг книги
Охотник за головами
1. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
рейтинг книги
"Фантастика 2023-201. Компиляция. Книги 1-26
Фантастика 2023. Компиляция
Фантастика:
боевая фантастика
попаданцы
рейтинг книги
Жизнь замечательных Блонди
1. Ai no Kusabi
Фантастика:
космическая фантастика
рейтинг книги