В этом уроке мы познакомимся с так называемыми флагами, которые позволяют изменить поведение регулярных выражений и правила поиска совпадений в строке.
Обратите внимание на этот пример:
/aa
/
aa
aa aa
Регулярному выражению aa
почему-то соответствует только одна подстрока в этой строке, хотя их должно быть три. Это происходит, потому что по умолчанию регулярные выражения ищут только первое соответствие. Чтобы изменить это поведение, используются флаги.
Если в течение этого курса вы уже пользовались редактором регулярных выражений или просто смотрели видео курса, то обратили внимание на поле, расположенное справа от шаблонной строки.
Чаще всего в нем стоит глобальный флаг /g
(global). Он включает поиск всех сопоставлений в строке и не останавливает поиск после первого совпадения.
Давайте поставим флаг g
. Теперь сопоставились все подстроки:
/aa
/g
aa aa aa
В этом курсе мы по умолчанию используем флаг g
в наших примерах и не указываем его дополнительно. Однако вы можете встретить его в составе регулярных выражений в тестах и практических заданиях. Если увидите /g
в конце регулярного выражения, то знайте — это флаг глобального поиска.
Глобальный флаг часто используется, когда нужно не просто найти сопоставление регулярному выражению в строке, но и извлечь или использовать результаты поиска.
В зависимости от языка программирования флаги могут включаться непосредственно в сами регулярные выражения, или задаваться иными способами. Как именно это реализовано в конкретном языке, нужно смотреть в документации языка.
Напоследок рассмотрим еще несколько флагов.
Например, есть флаг /i
, который включает режим игнорирования регистра:
/aa
/gi
aa Aa AA
Еще один флаг — /s
. Он включает соответствие метасимвола .
переводу строки. Другими словами, с ним строка, в которой мы ищем совпадения, представляется как одна строчка. Иногда это может пригодиться.
Не напоминают ли вам флаги что-то, пройденное нами ранее? Верно, по сути — это более могущественные версии модификаторов, которые мы рассмотрели в восьмом уроке.
Модификаторы позволяют делать более точечные изменения правил сопоставления, в то время как флаги делают это на глобальном уровне.
Существует еще несколько флагов. Изучение остальных — ваше задание после этого урока. Зайдите в любой редактор регулярных выражений, прочитайте документацию по флагам, покрутите примеры из нее и обязательно попробуйте использовать каждый флаг.
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
Для полного доступа к курсу нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.