Все основные токены regex: якоря, классы символов, квантификаторы, группы и флаги. Что означает каждый из них — с конкретным совпадением. Краткий справочник, дополняющий инструмент Regex Tester.
Токены regex складываются в паттерны: скомбинируйте якорь, класс символов и квантификатор, чтобы построить шаблон. ^ цепляется к началу, \d совпадает с цифрой, а {2,4} задаёт число повторений. Соберите их в ^\d{2,4}$, чтобы совпала целая строка из двух–четырёх цифр. Читайте паттерн слева направо, по одному токену за раз. Инструмент Regex Tester позволяет испытать любой из этих токенов вживую на собственном тексте.
Совпадает с позицией в начале строки или с началом отдельной строки текста при флаге m.
^He → He
Совпадает с позицией в конце строки или с концом отдельной строки текста при флаге m.
lo$ → lo
Совпадает с границей слова — позицией между символом слова и символом не-слова.
\bcat\b → cat
Совпадает с не-границей слова: позицией между двумя символами слова или двумя символами не-слова.
\Bar → ar
Классы символов
Совпадает с любым одиночным символом, кроме перевода строки, если не установлен флаг s.
a.c → abc
Совпадает с любой цифрой от 0 до 9.
\d → 7
Совпадает с любым символом, который не является цифрой.
\D → a
Совпадает с любым символом слова: буквой, цифрой или подчёркиванием.
\w → _
Совпадает с любым символом, который не является символом слова.
\W → !
Совпадает с любым пробельным символом: пробелом, табуляцией или переводом строки.
a\sb → a b
Совпадает с любым символом, который не является пробельным.
\S → a
Совпадает с любым из символов, перечисленных внутри скобок.
[aeiou] → e
Совпадает с любым символом, кроме перечисленных внутри скобок.
[^aeiou] → s
Совпадает с любым одиночным символом из заданного диапазона, от a до z.
[a-z] → m
Совпадает с любым одиночным символом, включая перевод строки, — распространённый способ записать точку, которая захватывает и переводы строк.
[\s\S] → \n
Совпадает с любой unicode-буквой из любого алфавита, если установлен флаг u.
\p{L} → é
Совпадает с любым unicode-символом числа из любого алфавита, если установлен флаг u.
\p{N} → ٣
Escape-последовательность: совпадает с одним символом перевода строки (line feed).
\n → line feed
Escape-последовательность: совпадает с одним символом табуляции.
\t → tab
Escape-последовательность: совпадает с одним символом возврата каретки (carriage return).
\r → carriage return
Совпадает с одиночным символом с заданным двузначным шестнадцатеричным кодом.
\x41 → A
Совпадает с одиночным символом с заданной шестнадцатеричной кодовой точкой, если установлен флаг u.
\u{1F600} → 😀
Пересечение классов (флаг v): совпадают символы, входящие одновременно в оба множества.
[[a-z]&&[^aeiou]] → t
Квантификаторы
Совпадает с предыдущим токеном ноль или более раз.
ab* → abbb
Совпадает с предыдущим токеном один или более раз.
a+ → aaa
Совпадает с предыдущим токеном ноль или один раз, делая его необязательным.
colou?r → color
Совпадает с предыдущим токеном ровно n раз.
a{3} → aaa
Совпадает с предыдущим токеном n или более раз.
a{2,} → aaaa
Совпадает с предыдущим токеном от n до m раз включительно.
a{2,4} → aaa
Ленивый квантификатор: совпадает с предыдущим токеном ноль или более раз, захватывая как можно меньше.
<.*?> on <a><b> → <a>
Ленивый квантификатор: совпадает с предыдущим токеном один или более раз, захватывая как можно меньше.
\d+? on 123 → 1
Ленивый квантификатор: совпадает с предыдущим токеном ноль или один раз, предпочитая ноль.
ab?? on ab → a
Ленивый квантификатор: совпадает с предыдущим токеном от n до m раз, захватывая как можно меньше.
a{1,3}? on aaa → a
Сверхжадный квантификатор (PCRE): совпадает с предыдущим токеном ноль или более раз и удерживает захваченное, никогда не откатываясь, чтобы попробовать другие разбиения.
.*+a on aaa → no match
Группы и альтернативы
Захватывающая группа: совпадает с последовательностью и запоминает её для обратных ссылок.
(ab)+ → abab
Незахватывающая группа: совпадает с последовательностью, не запоминая её.
(?:ab)+ → abab
Позитивный lookahead: совпадает, если следующие символы — abc, не потребляя их.
a(?=b) → a
Негативный lookahead: совпадает, если следующие символы — не abc, не потребляя их.
a(?!b) → a
Обратная ссылка: совпадает ровно с тем текстом, который захватила группа 1.
(a)\1 → aa
Альтернатива: совпадает с выражением до вертикальной черты или с тем, что после неё.
cat|dog → dog
Именованная захватывающая группа: совпадает с последовательностью и запоминает её под заданным именем.
(?<year>\d{4}) → year = 2026
Позитивный lookbehind: совпадает, если предшествующие символы — abc, не потребляя их.
(?<=a)b → b
Негативный lookbehind: совпадает, если предшествующие символы — не abc, не потребляя их.
(?<!a)b → b
Именованная обратная ссылка: совпадает ровно с текстом, захваченным именованной группой.
(?<w>\w+) \k<w> → the the
Атомарная группа (PCRE): совпадает с последовательностью один раз и никогда не откатывается внутрь неё.
(?>a+)ab on aab → no match
Branch reset (PCRE): альтернатива, в которой каждая ветка повторно использует одни и те же номера групп.
(?|(cat)|(dog)) → \1 = dog
Флаги
Глобальный флаг: находит в строке все совпадения, а не только первое.
/a/g on aaa → a, a, a
Флаг регистронезависимости: игнорирует регистр букв при сопоставлении.
/Hi/i → hi
Многострочный флаг: трактует ^ и $ как начало и конец каждой строки.
/^a/m matches at the start of each line
Флаг dotall: позволяет точке совпадать и с переводом строки.
/a.b/s → a\nb
Флаг unicode: трактует паттерн и входные данные как unicode-кодовые точки.
/\u{1F600}/u → 😀
Флаг sticky: совпадает только в точной позиции, заданной в lastIndex.
/ab/y matches only at lastIndex
Флаг индексов: добавляет в результат начальную и конечную позиции каждого совпадения.
/b/d on abc → indices [1, 2]
Флаг наборов unicode: более строгий u, который дополнительно разрешает операции над множествами внутри класса.
/[a-z&&[^aeiou]]/v → t
Расширенный флаг (PCRE): игнорирует неэкранированные пробелы и #-комментарии внутри паттерна.