Регулярные выражения
Регулярные выражения - это специальный язык, с помощью которого можно искать совпадения в тексте. Регулярные выражения позволяют использовать более сложные фильтры, нежели простое текстовое совпадение.
Регулярные выражения поддерживаются в
Образцы шаблонов
NOTE
Эти шаблоны предназначены для ознакомительных целей и основательно не проверялись. Используйте их с осторожностью и предварительно тестируйте.
| ^$ | Пустое значение |
|---|
| .+ | Непустое (любое) значение |
| ([A-Za-z0-9-]+) | Буквы, числа и знаки переноса |
| (\d/\d{1,2}/\d{4}) | Дата, например 21/3/2006 |
| ([^\s]+(?=.(jpg|gif|png)).\2 | Имя файла jpg, gif или png |
| ({1}$|{1}[0-9]{1}$|^50$) | Любое число от 1 до 50 включительно |
| (#?([A-Fa-f0-9]){3}(([A-Fa-f0-9]){3})?) | Шестнадцатеричный код цвета |
| ((?=.\d)(?=.[a-z])(?=.*[A-Z]).{8,15}) | От 8 до 15 символов с минимум одной цифрой, одной заглавной и одной строчной буквой (полезно для паролей) |
| (\w+@[a-zA-Z_]+?.[a-zA-Z]{2,6}) | Адрес email |
| (<(/?[^>]+)>) | HTML-теги |
NOTE
Отмеченное " + " работает в большинстве языков программирования.
Якоря
| ^ | Начало строки + |
|---|
| \A | Начало текста + |
| $ | Конец строки + |
| \Z | Конец текста + |
| \b | Граница слова + |
| \B | Не граница слова + |
| < | Начало слова |
| > | Конец слова |
Символьные классы
| \c | Управляющий символ |
|---|
| \s | Пробел |
| \S | Не пробел |
| \d | Цифра |
| \D | Не цифра |
| \w | Слово |
| \W | Не слово |
| \xhh | Шестнадцатеричный символ hh |
| \Oxxx | Восьмеричный символ ххх |
Символьные классы POSIX
| [:upper:] | Буквы в верхнем регистре |
|---|
| [:lower:] | Буквы в нижнем регистре |
| [:alpha:] | Все буквы |
| [:alnum:] | Буквы и цифры |
| [:digit:] | Цифры |
| [:xdigit:] | Шестнадцатеричные цифры |
| [:punct:] | Пунктуация |
| [:blank:] | Пробел и табуляция |
| [:space:] | Пустые символы |
| [:cntrl:] | Управляющие символы |
| [:graph:] | Печатные символы |
| [:print:] | Печатные символы и пробелы |
| [:word:] | Буквы, цифры и подчёркивание |
Утверждения
| ?= | Вперёд смотрящее + |
|---|
| ?! | Отрицательное вперёд смотрящее + |
| ?<= | Назад смотрящее + |
| ?!= или ? | Отрицательное назад смотрящее + |
| ?> | Однократное подвыражение |
| ?() | Условие [если, то] |
| ?()| | Условие [если, то, а иначе] |
| ?# | Комментарий |
Кванторы
| * | 0 или больше + |
|---|
| *? | 0 или больше, нежадный + |
| + | 1 или больше + |
| +? | 1 или больше, нежадный + |
| ? | 0 или 1 + |
| ?? | 0 или 1, нежадный + |
| Ровно 3 + |
| 3 или больше + |
| 3, 4 или 5 + |
| {3,5}? | 3, 4 или 5, нежадный + |
Специальные символы
| \ | Экранирующий символ + |
|---|
| \n | Новая строка + |
| \r | Возврат каретки + |
| \t | Табуляция + |
| \v | Вертикальная табуляция + |
| \f | Новая страница + |
| \a | Звуковой сигнал |
| [\b] | Возврат на один символ |
| \e | Escape-символ |
| \N | Именованный символ |
Подстановка строк
| $n | n-ая непассивная группа |
|---|
| $2 | "xyz" в /^(abc(xyz))$/ |
| $1 | "xyz" в /^(?:abc)(xyz)$/ |
| $` | Перед найденной строкой |
| $' | После найденной строки |
| $+ | Последняя найденная строка |
| $& | Найденная строка целиком |
| $_ | Исходный текст целиком |
| $$ | Символ "$" |
Диапазоны
| . | Любой символ, кроме переноса строки (\n) + |
|---|
| (a|b) | a или b + |
| (…) | Группа + |
| (?:…) | Пассивная группа + |
| [abc] | Диапазон (a или b или c) + |
| [^abc] | Не a, не b и не c + |
| [a-q] | Буква между a и q + |
| [A-Q] | Буква в верхнем регистре между A и Q + |
| [0-7] | Цифра между 0 и 7 + |
| \n | n-ая группа/подшаблон + |
NOTE
Диапазоны включают граничные значения.
Модификаторы шаблонов
| g | Глобальный поиск |
|---|
| i | Регистронезависимый шаблон |
| m | Многострочный текст |
| s | Считать текст одной строкой |
| x | Разрешить комментарии и пробелы в шаблоне |
| e | Выполнение подстановки |
| U | Нежадный шаблон |
Мета-символы (экранируются)