Регулярные выражения
Регулярные выражения - это строки символов, которые задают шаблоны поиска в тексте. Они позволяют выполнять разнообразные операции, такие как поиск, сопоставление и извлечение подстрок.
Шаблон бота с самыми распространенными регулярными выражениями можно скопировать по этой ссылке: https://senler.ru/cabinet/botshare/1230502_c0f5a5457766fc24ea3ec55dd738cf46
Основные понятия
- Составные части:
- Обычные символы: Представляют собой сами себя и соответствуют точно таким же символам в тексте.
- Метасимволы: Особые символы, представляющие классы или операции, такие как ., *, +, ?, [ ] и другие. Метасимволы можно вставить как обычные символы, если предварительно экранировать их с помощью обратного слеша \.
- Группы и объединение групп.
Группы позволяют объединять части регулярного выражения вместе и применять операции ко всей группе.
Например:
- ^: соответствует началу строки.
- $: соответствует концу строки.
- (abc): Группа, соответствующая последовательности "abc".
- a(bc): Группа, соответствующая "bc", но только если перед ней идет "a".
- Условный оператор или (|)
Оператор | используется для создания альтернатив в регулярных выражениях.
Например:
- cat|dog: Соответствует "cat" или "dog".
- (red|blue)car: Соответствует "redcar" или "bluecar".
Классы символов, диапазоны и квантификаторы
- Одиночные символы
Обычные символы в регулярных выражениях представляют собой сами себя и соответствуют точно таким же символам в тексте.
- Диапазоны символов
Диапазоны позволяют указать диапазон символов, который может соответствовать в тексте. Например:
- [0-9] соответствует любой цифре.
- [a-z] соответствует любой строчной букве.
- [A-Z] соответствует любой заглавной букве.
- [aeiou] соответствует любой из гласных букв.
- [a-zA-Z] соответствует любой букве в верхнем или нижнем регистре.
- [а-яёА-ЯЁ]: соответствует любой букве кириллицы, включая Ё.
- [0-9a-fA-F] соответствует любой шестнадцатеричной цифре.
- Отрицание класса символов
Добавление ^ в начале класса символов инвертирует его, позволяя выбрать любой символ, кроме тех, что указаны в классе. Например:
- [^0-9] соответствует любому символу, кроме цифры.
- Специальные классы символов
- \d соответствует любой цифре (то же, что и [0-9]).
- \D соответствует любому не цифровому символу.
- \w соответствует любой букве или цифре (то же, что и [a-zA-Z0-9]).
- \W соответствует любому не алфавитно-цифровому символу.
- \s соответствует любому символу пробела (пробел, табуляция, новая строка).
- \S соответствует любому символу, не являющемуся пробелом.
-
Квантификаторы
Квантификаторы в регулярных выражениях определяют количество повторений предыдущего символа, символьного класса или группы символов. Они делают шаблоны более гибкими и могут существенно упростить создание более сложных выражений.
Основные квантификаторы:
- * (звездочка): Позволяет нулю или более повторений предыдущего символа или группы символов. Пример: 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} соответствует одной, двум или трём буквам в верхнем или нижнем регистре.
Инструменты для тестирования регулярных выражений
Существует множество онлайн-инструментов, которые помогут вам тестировать и проверять регулярные выражения.
Два самых удобных инструмента для составления регулярных выражений: Regex101 и RegExr.
(данные инструменты предоставлены в порядке рекомендации, качество и корректность их работы вне зоны ответственность сервиса Senler)