Найти тему
Kenu Len

Регулярные выражения. Часть 1: База

Оглавление

Введение

Немного Википедийного:

Регулярные выражения  — формальный язык, используемый в компьютерных программах, работающих с текстом, для поиска и осуществления манипуляций с подстроками в тексте.

Для проверки своих регулярок и экспериментов советую использовать очень удобный сайт: https://regex101.com/

Скриншот сайта
Скриншот сайта

Специальные символы

Перейдем к базовым элементам для составлений простейших выражений. Спец символы:

  • . - соответствует одному любому символу;
  • \d - соответствует любой цифре от 0 до 9;
  • \D - любой символ, исключая цифровой;
  • \w - любой один буквенный, цифровой или знака подчеркивания;
  • \W - любой кроме буквенного, цифрового или знака подчеркивания;
  • \s - пробельный символ;
  • \S - любой символ кроме пробельного;
  • \b - граница слова. Например, вы можете отсортировать все строки оканчивающиеся на .ru
-2
  • ^ и $ - начало и конец строки соответственно.
Строка начинается на "i" - "^i", обязательно идет любое количество любых символов - ".+", строка кончается символом "e" - "e$"
Строка начинается на "i" - "^i", обязательно идет любое количество любых символов - ".+", строка кончается символом "e" - "e$"

Повторения

  • ? - ноль или одно повторение предыдущего токена (спец символа, группы, символьного класса). Может быть полезным, например, при поиске упоминаний переменной в коде;
-4
  • * - ноль или более повторений предыдущего токена;
  • + - одно или более повторений предыдущего токена;
  • {N, M} - диапазон в котором предыдущий токен должен повторяться, причем допускается не указывать N (тогда будет считаться от 0 до N) и M (от N до бесконечности повторений).

Группы

Символы заключенные в круглые скобки составляют группу. Группе можно задать имя (?P<ИМЯ_ГРУППЫ>). Пример:

-5

Имена групп не могут повторяться. Использование имен групп является полезной практикой при использовании больших регулярных выражений в вашей программе, так как вам не придется менять код каждый раз когда меняется порядок/количество групп.

Примечание: P ключ для ЯП Python, указывающий ему, что мы даем имя группе (если брать документацию языка). Что в PHP, что в Perl не встретил проблем использования ?<> и ?P<>. Так как я пишу регулярные под Python, то и дальнейшие примеры будут с ?P<>

Символьный класс

Символьный класс представляет собой набор символов заключенных в квадратные скобки. Грубо говоря, любой из токенов, заключенных в скобки, будет захвачен из текста.

-6

Или

| - еще один очень полезный специальный символ обозначающий "или". Допустим мы ищем конкретное слово с конкретными окончаниями, например собака. Хочу найти всех собак с окончаниями "ка" и "чка", тогда выражение будет соба(ка|чка).

-7

Полный плейлист