Книга: Программирование на языке Ruby

3.11. Внутренние модификаторы

3.11. Внутренние модификаторы

Обычно модификаторы (например, i или m) задаются после регулярного выражения. Но что если мы хотим применить модификатор только к части выражения?

Существует специальная нотация для включения и выключения модификаторов. Заключенный в круглые скобки вопросительный знак, за которым следует один или несколько модификаторов, «включает» их до конца регулярного выражения. А если некоторым модификаторам предшествует минус, то соответствующие режимы «выключаются»:

/abc(?i)def/     # Соответствует abcdef, abcDEF, abcDef,
                 # но не ABCdef.
/ab(?i)cd(?-i)ef/# Соответствует abcdef, abCDef, abcDef, ...,
                 # но не ABcdef или abcdEF.
/(?imx).*/       # To же, что /.*/imx
/abc(?i-m).*/m   # Для последней части регулярного выражения включить
                 # распознавание регистра, выключить многострочный
                 # режим.

При желании можно поставить перед подвыражением двоеточие, и тогда заданные модификаторы будут действовать только для этого подвыражения:

/ab(?i:cd)ef/ # То же, что /ab(?i)cd(?-i)ef/

По техническим причинам использовать таким образом модификатор о нельзя. Модификатор x — можно, но я не знаю, кому бы это могло понадобиться.

Оглавление книги


Генерация: 1.536. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз