Регулярные выражения -модификаторы (флаги)
Модификаторы регулярных выражений (также называемые модификаторами шаблона или флагами) — это специальные директивы, используемые для изменения поведения сопоставления регулярного выражения.
Флаги также называются модификаторами. Флаги в регулярных выражениях используются для задания дополнительных стратегий сопоставления.
Флаги не записываются внутри регулярного выражения; они размещаются вне выражения, в следующем формате:
/pattern/flags
Общие модификаторы
В следующей таблице перечислены часто используемые модификаторы в регулярных выражениях:
1. i(игнорирование регистра) - Игнорировать регистр
-
Делает сопоставление нечувствительным к регистру
-
Пример:
/abc/iМожет совпадать с "abc", "Abc", "ABC" и т. д. -
Поддерживаемые языки: почти все реализации регулярных выражений (JavaScript, PHP, Python и т. д.)
2. g(глобальный) - Глобальное сопоставление
-
Находить все совпадения, а не останавливаться после первого совпадения
-
Пример: В строке "ababab",
/ab/gСовпадает со всеми тремя "ab" -
Поддерживаемые языки: JavaScript, PHP и т.д.
3. m(multiline) - Многострочный режим
-
Изменяет
^и$поведение так, чтобы оно соответствовало началу и концу каждой строки, а не только началу и концу всей строки. -
Пример: В многострочной строке,
/^abc/mСовпадает с "abc" в начале каждой строки -
Поддерживаемые языки: JavaScript, PHP, Python, Perl и т.д.
4. s(single line/dotall) - Однострочный режим
-
Заставляет точку
.соответствовать всем символам, включая символы новой строки -
В JavaScript он называется режимом "dotall", используя
/smodifier -
Пример:
/a.b/sМожет соответствовать "a\nb" -
Поддерживаемые языки: PHP, Perl, Python (как
re.DOTALL)、JavaScript(ES2018+)
5. u(unicode) - режим Unicode
-
Включает полную поддержку Unicode
-
Корректно обрабатывает суррогатные пары UTF-16 и свойства символов Unicode
-
Пример:
/\p{Script=Greek}/uМожет сопоставлять греческие буквы -
Поддерживаемые языки: JavaScript, PHP и т.д.
6. y(sticky) - липкое сопоставление
-
Начинает сопоставление с текущей позиции целевой строки (используя
lastIndexсвойство) -
Похоже на
^якорь, но он нацелен на начальную позицию совпадения -
Пример: В JavaScript,
/a/yначнётсяlastIndexсовпадение "a" из -
Поддерживаемые языки: JavaScript
7. x(extended) - Расширенный режим
-
Игнорирует пробелы и комментарии в шаблоне, делая регулярное выражение более читаемым
-
Пример: В PHP,
/a b c/xэквивалентно/abc/ -
Поддерживаемые языки: PHP, Perl, Python (как
re.VERBOSE)
модификатор g
Модификатор g находит все совпадения в строке:

Пример
Найти "example" в строке:
Попробуйте сами »
модификатор i
Модификатор i выполняет сопоставление без учета регистра, пример ниже:

Пример
Найти "example" в строке:
Попробуйте сами »
модификатор m
Модификатор m заставляет^и$соответствовать началу и концу каждой строки в тексте.
Если используется только g, сопоставляется только первая строка; после добавления m достигается многострочное сопоставление.

В примере ниже строка использует\nдля переноса строк:
Пример
Найти "example" в строке:
Попробуйте сами »
модификатор s
По умолчанию точка.соответствует любому символу, кроме символа новой строки\nПосле добавления s,.включает символы новой строки\n。

Пример модификатора s:
Пример
Найти в строке:
Попробуйте сами »
Расширенные примечания
Дополнительная таблица модификаторов для конкретных языков:
| Язык | Конкретный модификатор | Описание |
|---|---|---|
| PHP | A |
Привязывает шаблон к началу строки |
D |
$Соответствует только концу строки (исключая завершающий символ новой строки) |
|
U |
Инвертирует жадность квантификаторов (делает все квантификаторы нежадными) | |
| Python | re.A |
make\w,\W,\b,\Bи т. д. соответствуют только ASCII-символам |
re.L |
Определяется в соответствии с настройками локали\w,\Wзначение «и т. д.» |
|
| JS(ES2022) | d |
Создаёт свойство indices для результатов сопоставления (содержащее начальный и конечный индексы позиций совпадения) |
Пример таблицы комбинаций модификаторов:
| Комбинация | Эффект |
|---|---|
gi |
Глобальное сопоставление + игнорирование регистра (например, найти все формы слова "email") |
ims |
Игнорирование регистра + многострочный режим + точка соответствует символу новой строки (обычно используется при анализе логов) |
gu |
Глобальное сопоставление + поддержка Unicode (например, найти все эмодзи Unicode) |
Таблица встроенных модификаторов (в стиле PCRE/Perl):
| Синтаксис | Область действия | Пример |
|---|---|---|
(?i) |
Включить игнорирование регистра | a(?i)bc→ Совпадает с "aBc", "aBC" |
(?-i) |
Отключить игнорирование регистра | a(?i)b(?-i)c→ Совпадает только с "aBc" |
(?i:...) |
Действует только внутри круглых скобок | a(?i:b)c→ Совпадает с "aBc", "abc" |
Другие расширенияПримечание: реализация модификаторов может различаться в разных языках. При их использовании рекомендуется обратиться к документации конкретного языка.