Синтаксис регулярных выражений крайне сложен и многообразен. В данном разделе приведены самые употребляемые метасимволы регулярных выражений с примерами их применения.
Большинство символов в регулярном выражении представляют сами себя за исключением специальных символов [ ] \ / ^ $ . | ? * + ( ) { }, которые могут быть предварены символом \ (обратная косая черта) ("экранированы", "защищены") для представления их самих в качестве символов текста. Можно экранировать целую последовательность символов, заключив её между \Q и \E.
Синтаксис
Представление |
Эквивалент |
Значение |
---|---|---|
\d |
[0-9] |
Цифра |
\D |
[^\d] |
Любой символ, кроме цифры |
\w |
[a-zA-Z0-9_] |
Символы, образующие «слово» (буквы, цифры и символ подчёркивания) |
\W |
[^\w] |
Символы, не образующие «слово» |
\s |
[ \t\v\r\n\f] |
Пробельный символ |
\S |
[^\s] |
Непробельный символ |
Символы для использования в регулярных выражениях
Символ |
Описание |
Примеры |
---|---|---|
. |
Любой символ |
".+" — любая ненулевая строка в кавычках |
^ |
Начало строки |
^[а-я] – абзац, начинающийся со строчной буквы |
$ |
Конец строки |
^$ — пустая строка |
[ ] |
Набор символов |
0x[0a-c] – числа, начинающиеся с 0×0, 0xa, 0xb или 0xc |
| |
Альтернатива (ИЛИ) |
рабоч(его|ее) — ищем "рабочего" или "рабочее" |
( ) |
Выделение подвыражения |
(рабоч)(его|ее) – два подвыражения |
n |
Использование подвыражения |
(0x.., *)1 – два одинаковых байта рядом в массиве |
* |
0 и более раз |
^.* — выделение строк (пустых и не пустых) |
+ или |
1 и более раз |
^.+ — выделение непустых строк (абзацев) |
? или {0,1} |
0 или 1 |
мест[^ ]? — ищет "мест", "места", "место"… |
"Не жадный" режим |
0{2,4} в строке нолей найдёт "0000", а 0{2.4}? — "00" |
|
{n} |
Итератор "n раз" |
0x[0-9a-f]{2}[^0-9a-f] – найдёт только байтовые числа |
{n,} |
Итератор "не менее n раз" |
^.{40,} — абзацы, в которых не менее 40 символов |
{n,m} |
Итератор "не менее n, не более m" |
<[:alpha:]{2,4}> — искать слова от 2 до 4 символов |
xnn |
Шестнадцатиричное значение |
x20 – пробел |
xnnnn |
Шестнадцатиричное (Unicode) |
x0410 – буква "А" русского алфавита |
t |
TAB |
^t – найти строку, начинающуюся с TAB |
n |
NL |
|
s или [ tnrf] |
Разделитель |
\s |
S или [^ tnrf] |
НЕ разделитель |
\S |
d или [0-9] |
Цифра |
\d — найти только цифры |
D или [^0-9] |
НЕ цифра |
\D — найти НЕ цифры |
w или [a-zA-Z0-9_] |
Символ слова |
\w |
W или [^w] |
НЕ символ слова |
\W |
b |
Граница слова |
\b |
B |
НЕ граница слова |
\B |
< |
Начало слова |
(< — найти круглую открывающую скобку в начале слова |
> |
Конец слова |
[a-z_]+>[] — найти объявление массива |
A |
Начало текста |
\A |
Z |
Конец текста |
\Z |
[:digit:]? или d |
Цифра |
|
[:space:]? или [ ] |
Пробел |
|
[:print:]? |
Все печатаемые и пробелы |
|
[:cntrl:]? или t |
Непечатаемые (без пробелов) |
|
[:alnum:]? или [a-zA-Z0-9] |
Цифра или буква |
|
[:alpha:]? или [a-zA-Z] |
Буква |
|
[:lower:]? |
Буква в нижнем регистре |
|
[:upper:]? |
Буква в верхнем регистре |
|
Для того, чтобы искать символ, совпадающий с метасимволом, его следует предварить обратной косой чертой — \ ^ + … |
||
Чтобы определить для поиска в перечне символ [ или ] , нужно поместить их в начало перечня, но лучше предварить косой чертой — []a-z] [a-z]] |
||
Чтобы определить для поиска в перечне символ - , нужно поместить его в начало или конец перечня, но лучше предварить косой чертой |
||
Символ | не работает в перечне, поэтому б[о|а]р найдёт "бор", "бар" или "б|р". |
||
Символы для замены |
||
n |
Найденное выражение |
Replace: /*2*/ — замена строкового на блочный |
$n |
Найденное выражение |
Ещё один синтаксис подстановки подвыражения |