# Регулярные выражения

Регулярные выражения - это строки символов, которые задают шаблоны поиска в тексте. Они позволяют выполнять разнообразные операции, такие как поиск, сопоставление и извлечение подстрок.

<mark style="background-color:red;">Шаблон бота с самыми распространенными регулярными выражениями можно скопировать по этой ссылке:</mark> [<mark style="background-color:red;">https://senler.ru/cabinet/botshare/1230502\_c0f5a5457766fc24ea3ec55dd738cf46</mark>](https://senler.ru/cabinet/botshare/1230502_c0f5a5457766fc24ea3ec55dd738cf46)

Основные понятия

1. Составные части:

* Обычные символы: Представляют собой сами себя и соответствуют точно таким же символам в тексте.
* Метасимволы: Особые символы, представляющие классы или операции, такие как ., \*, +, ?, \[ ] и другие. Метасимволы можно вставить как обычные символы, если предварительно экранировать их с помощью обратного слеша \\.

2. Группы и объединение групп.\
   Группы позволяют объединять части регулярного выражения вместе и применять операции ко всей группе. \
   \
   Например:

* ^: соответствует началу строки.
* $: соответствует концу строки.
* (abc): Группа, соответствующая последовательности "abc".
* a(bc): Группа, соответствующая "bc", но только если перед ней идет "a".

3. Условный оператор или (|)\
   Оператор | используется для создания альтернатив в регулярных выражениях. \
   \
   Например:

* cat|dog: Соответствует "cat" или "dog".
* (red|blue)car: Соответствует "redcar" или "bluecar".

\
**Классы символов, диапазоны и квантификаторы**

1. Одиночные символы

Обычные символы в регулярных выражениях представляют собой сами себя и соответствуют точно таким же символам в тексте.

2. Диапазоны символов

Диапазоны позволяют указать диапазон символов, который может соответствовать в тексте. Например:

* \[0-9] соответствует любой цифре.
* \[a-z] соответствует любой строчной букве.
* \[A-Z] соответствует любой заглавной букве.
* \[aeiou] соответствует любой из гласных букв.
* \[a-zA-Z] соответствует любой букве в верхнем или нижнем регистре.
* \[а-яёА-ЯЁ]: соответствует любой букве кириллицы, включая Ё.
* \[0-9a-fA-F] соответствует любой шестнадцатеричной цифре.

3. Отрицание класса символов

Добавление ^ в начале класса символов инвертирует его, позволяя выбрать любой символ, кроме тех, что указаны в классе. Например:

* \[^0-9] соответствует любому символу, кроме цифры.

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

* \d соответствует любой цифре (то же, что и \[0-9]).
* \D соответствует любому не цифровому символу.
* \w соответствует любой букве или цифре (то же, что и \[a-zA-Z0-9]).
* \W соответствует любому не алфавитно-цифровому символу.
* \s соответствует любому символу пробела (пробел, табуляция, новая строка).
* \S соответствует любому символу, не являющемуся пробелом.

5. #### Квантификаторы

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

**Основные квантификаторы:**

* \* (звездочка): Позволяет нулю или более повторений предыдущего символа или группы символов. Пример: a\* соответствует "a", "aa", "aaa" и так далее.
* \+ (плюс): Требует одно или более повторений предыдущего символа или группы символов. Пример: b+ соответствует "b", "bb", "bbb" и так далее.
* ? (вопросительный знак): Опциональный символ, который может встречаться ноль или один раз. Пример: colou?r соответствует "color" или "colour".

**Квантификаторы с фиксированным числом повторений**

* {n}: Точное количество повторений. Пример: \d{3} соответствует ровно трем цифрам.
* {n,}: Не менее n повторений. Пример: \w{2,} соответствует двум или более буквам, цифрам.
* {n,m}: От n до m повторений. Пример: \[a-zA-Z]{1,3} соответствует одной, двум или трём буквам в верхнем или нижнем регистре.

### Инструменты для тестирования регулярных выражений

Существует множество онлайн-инструментов, которые помогут вам тестировать и проверять регулярные выражения.&#x20;

Два самых удобных инструмента для составления регулярных выражений:[ Regex101](https://regex101.com/) и[ RegExr](https://regexr.com/).\
(данные инструменты предоставлены в порядке рекомендации, качество и корректность их работы вне зоны ответственность сервиса Senler)

<br>
