regular expressions - средство и язык для поиска и замены в тексте.
При поиске используется шаблон, который состоит из символов, метасимволов и правила поиска
Для манипуляций с текстом указывается строка замены, которая может содержать в себе специальные символы.
Синтаксис
Обычные символы (литералы)
Большинство символов в регулярном выражении являются обычными символами
Специальные символы (метасимволы)
[ ] \ / ^ $ . | ? * + ( ) { }
Для использования в качестве обычных символов, специальные символы экранируются символом \ (обратная косая черта)
Любой символ
Метасимвол . (точка) означает один любой символ
Символьные классы
Символы в квадратных скобках [ ] указывают интерпретатору, что в данном месте может быть один из указанных символов:
[abcd] - в тексте возможен один из указанных символов
Для указания исключения, используют символ ^ внутри квадратных скобок:
[^0-9] - любой символ, кроме цифр
Символьные классы и специальные метасимволы:
\d [0-9] Цифровой символ
\D [^0-9] Нецифровой символ
\s [ \f\n\r\t\v] Пробельный символ
\S [^ \f\n\r\t\v] Непробельный символ
\w [[:word:]] Буквенный/цифровой символ, знак подчёркивания
\W [^[:word:]] Любой символ, кроме буквенного, цифрового или знака подчёркивания
Позиция в строке
^ Начало текста (или строки при модификаторе ?m):
^c
Результат: ccc ccc
$ Конец текста (или строки при модификаторе ?m):
c$
Результат: ccc ccc
\b Граница слова
c\b
Результат: cccc cccc
\bc
Результат: cccc cccc
\B Не граница слова
\Ba\B
Результат: ccc ccc
\G Предыдущий успешный поиск
\Ga
Результат: ccc ccc
Специальные символы
\n — перевод строки
\r — возврат каретки
Перечисление вариантов
Вертикальная черта разделяет допустимые варианты.
red|green|blue
Группы
Для определения области действия или приоритета операций используются круглые скобки.
Поиск последовательностей (Квантификация)
Квантификатор после символа, символьного класса или группы определяет, сколько раз предшествующее выражение может встречаться.
? - Ноль или одно повторение {0,1}
* - Ноль или более повторение {0,}
+ - Одно или более повторение {1,}
красны?й
Результат: краснй, красный
зелены*й
Результат: зеленй, зеленый, зеленыый
сини+й
Результат: синий, синиий
.* - любое число символов
Жадная, ленивая и ревнивая квантификация
regex* regex*? regex*+
regex? regex+? regex++
regex{n,} regex{n,}? regex{n,}+
ab(xa)*+a
Результат: abxaabxaa