Программирование на языке Ruby
Шрифт:
Возможно, вы заметили, что я пользовался обычными комментариями Ruby (
3.10. Сопоставление точки символу конца строки
Обычно точка соответствует любому символу, кроме конца строки. Если задан модификатор многострочности m, точка будет сопоставляться и с этим символом. Другой способ — задать флаг
Этот режим не оказывает влияния на то, где устанавливается соответствие якорям (
3.11. Внутренние модификаторы
Обычно модификаторы (например,
Существует специальная нотация для включения и выключения модификаторов. Заключенный в круглые скобки вопросительный знак, за которым следует один или несколько модификаторов, «включает» их до конца регулярного выражения. А если некоторым модификаторам предшествует минус, то соответствующие режимы «выключаются»:
При желании можно поставить перед подвыражением двоеточие, и тогда заданные модификаторы будут действовать только для этого подвыражения:
По техническим причинам использовать таким образом модификатор
3.12. Внутренние подвыражения
Для указания подвыражений применяется нотация
Отметим, что наличие подвыражения еще не означает группировки. С помощью дополнительных скобок их, конечно, можно превратить в запоминаемые группы.
Еще обратим внимание на то, что эта конструкция собственническая, то есть жадная и при этом не допускает возврата в подвыражение.
В предыдущем примере подвыражение
3.13. Ruby и Oniguruma
Новая библиотека регулярных выражений в Ruby называется Oniguruma. Это японское слово означает что-то вроде «колесо духов». (Те, кто не владеет японским, часто пишут его неправильно; имейте в виду, что тут не обойтись без «guru»!)
Новая библиотека превосходит старую в нескольких отношениях. Прежде всего, она лучше работает с иноязычными строками, а также добавляет кое-какие интересные возможности к регулярным выражениям. Наконец, лицензия на ее использование мягче, чем на использование Ruby в целом. Когда писалась эта книга, Oniguruma еще не была полностью интегрирована в Ruby.
В следующем разделе мы расскажем, как определить, присутствует ли библиотека Oniguruma. А затем покажем, как можно ее собрать, если она не включена в дистрибутив.
3.13.1. Проверка наличия Oniguruma
Если вас интересует библиотека Oniguruma, то первым делом нужно выяснить, есть ли она в вашем экземпляре Ruby. В версиях 1.8.4 и младше ее, скорее всего, нет. Стандартно она включается в дистрибутив версии 1.9.
Вот как можно без труда выяснить, присутствует ли Oniguruma, проверив три условия. Во-первых, как я сказал, она стандартно поставляется в версии 1.9 и старше. В последних версиях обеих библиотек для работы с регулярными выражениями определена строковая константа
"Фантастика 2024-21". Компиляция. Книги 1-21
Фантастика 2024. Компиляция
Фантастика:
боевая фантастика
детективная фантастика
попаданцы
рейтинг книги
Deus vult
3. Путь князя
Фантастика:
фэнтези
рпг
попаданцы
рейтинг книги
Жена по ошибке
Любовные романы:
любовно-фантастические романы
рейтинг книги
Точка Бифуркации
1. ТБ
Фантастика:
боевая фантастика
рейтинг книги
Товарищ "Чума"
1. Товарищ "Чума"
Фантастика:
попаданцы
альтернативная история
рейтинг книги
Эволюционер из трущоб. Том 12
12. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
рейтинг книги
Избранное
Мастера современной прозы
Проза:
современная проза
рейтинг книги
"Фантастика 2023-139". Компиляция. Книги 1-20
Фантастика 2023. Компиляция
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
городское фэнтези
попаданцы
аниме
рейтинг книги
Переговоры
Детективы:
политические детективы
рейтинг книги
Санта-Хрякус
20. Плоский мир
Фантастика:
юмористическая фантастика
рейтинг книги
Золотое руно (сборник)
Шедевры фантастики
Фантастика:
научная фантастика
рейтинг книги
Золото бунта
Приключения:
исторические приключения
рейтинг книги
Газлайтер. Том 27
27. История Телепата
Фантастика:
боевая фантастика
попаданцы
аниме
рейтинг книги
Дневники 1932-1947 гг
Документальная литература:
биографии и мемуары
рейтинг книги