Skip to content

Токены regex объяснённые

Все основные токены regex: якоря, классы символов, квантификаторы, группы и флаги. Что означает каждый из них — с конкретным совпадением. Краткий справочник, дополняющий инструмент Regex Tester.

Токены regex складываются в паттерны: скомбинируйте якорь, класс символов и квантификатор, чтобы построить шаблон. ^ цепляется к началу, \d совпадает с цифрой, а {2,4} задаёт число повторений. Соберите их в ^\d{2,4}$, чтобы совпала целая строка из двух–четырёх цифр. Читайте паттерн слева направо, по одному токену за раз. Инструмент Regex Tester позволяет испытать любой из этих токенов вживую на собственном тексте.

Справочная таблица · 55 записиОткрыть инструмент regex-tester →
55 of 55 rows
Якоря
Совпадает с позицией в начале строки или с началом отдельной строки текста при флаге 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): игнорирует неэкранированные пробелы и #-комментарии внутри паттерна./a b/x → ab