Книга: Программирование на языке 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
— можно, но я не знаю, кому бы это могло понадобиться.
- 3.1. Синтаксис регулярных выражений
- 3.2. Компиляция регулярных выражений
- 3.3. Экранирование специальных символов
- 3.4. Якоря
- 3.5. Кванторы
- 3.6. Позитивное и негативное заглядывание вперед
- 3.7. Обратные ссылки
- 3.8. Классы символов
- 3.9. Обобщенные регулярные выражения
- 3.10. Сопоставление точки символу конца строки
- 3.11. Внутренние модификаторы
- 3.12. Внутренние подвыражения
- 3.13. Ruby и Oniguruma
- 3.14. Примеры регулярных выражений
- 3.15. Заключение
- Модификаторы типа функции
- 3.12. Внутренние подвыражения
- Модификаторы спецификации преобразования, используемые в функции printf( )
- Внутренние ссылки
- Модификаторы
- 8.4.5. Внутренние цифровые интерфейсы
- Внешние и внутренние факторы
- 2.1. Внутренние устройства
- Внутренние функции SQL
- Модификаторы const и volatile
- Модификаторы cdecl и pascal
- Модификаторы near, far, huge