Краткий гайд по регуляркам
Примечание: Создавать и проверять регулярное выражение рекомендуется на сайте: https://regex101.com.
^ - начало строки. использовать перед выражением. после этого символа идет начало строки
$ - перед этим пишем то, что должно быть в конце
\ - экранирование. это если нужно спецсимволы искать.
к таким относится: . + - ? [ ] ( ) * \ | ~ ^ $
. - любой символ+ - может повториться еще сколько угодно раз * - может повториться еще сколько угодно раз или отсутствовать? - повторяется 0 или 1 раз. Но может иметь и другое значение в использовании в комбинации с некоторыми символами.
| - логическое ИЛИ. Может использоваться как для всего выражения так и для какого-то слова. если для слова, то варианты можно взять в скобки: ()Пример: Кинуть (бананом|ананасом)
Для начала этого с головой хватит!
НО если хочется пойти дальше
то можно знать что есть еще квадратные скобки: [ ] - внутри особенный синтаксис. Тут записывается либо символ, который нужно найти. либо диапазон. Ниже пишу распространенные диапазоны:0-9 - любая цифра. a-z - любая буква не нашаа-я - любая буква кириллица{ } — количество повторений: {n} — повторяется n раз, {m,n} — повторяется от m до n раз, {m,} - повторяется не менее m раз, {,n} — повторяется не более n раз.
() — группа для получения внутренней подстроки в поисковой фразе. Более подробно
Можно еще разные регистры типа: a-Z или A-Z, но конкретно Автопилот не учитывает регистр.
также стоит знать, что большинство символов внутри квадр. скобок не экранируются
Также стоит знать, что есть некоторые доп. варианты записи разных типов символов. Например:
\d— любая цифра.\s— пробел.s— любой символ включая переносы строк.\w— цифробуквенный символ или знак _.
___________
Дальше открываем эту замечательную штуку: https://regex101.com/
и играемся / тестим! С подсветками, блэкджеком и подтанцовкой :)
_________
Пара примеров:
^васяНачинается с вася.
пример ДА: Вася, ты куда?
пример НЕТ: Эй, Вася, ты куда?
вася$Заканчивается на ВАСЯ.
пример ДА: тут был васяпример НЕТ: тут был вася!!!
\[id[0-9]+\|.+\]Найдет подстроку, начинающуюся с [id, потом любая цифра [0-9] сколько угодно раз +, после нее |, после этого «любой символ» . «сколько угодно раз» + до ]пример ДА: @id12345 (вася)пример НЕТ: [12345|вася]
(@id\d+?).+(https:\/\/|vk\.com\/)содержит «подстроку», начинающуюся с @id потом любая цифра \d сколько угодно раз +, пока не закончатся цифры ?) дальше любой символ . сколько угодно раз + и ссылка на любой сайт или на ВК (https:\/\/|vk\.com\/). Скобки тут для отдельного выражения и разных вариантов ссылок соответственно.
Примеры количеств:\w{5} — от 5 цифробукв; \d{8,10} — от 8 до 10 цифр;(ворона|галка){2} —2 слова («ворона» или «галка») подряд.
Не содержит
Покажу просто на примере ключевых слов: слово1 и слово 2. Остальная логика должна быть понятна.
^(?!(слово1|слово 2))— не содержит ни одну из указанных фраз.^(?!(^слово1$|^слово 2$))— не равно ни одной из указанных фраз.
Думаю что уже очевидно, что все что должно НЕ содержаться достаточно просто указывать внутри такой конструкции: ^(?!(___)) (вместо подчеркиваний __ ). А там внутри по сути такие же привычные нам регулярки.
Другие примеры
(для практического использования):
\d{2}.\d{2}.\d{4}—простой вариант распознавания даты(0[1-9]|[12][0-9]|3[01])[- .]+(0[1-9]|1[012])[- .]+(19|20)\d\d— продвинутый вариант распознавания даты. С проверкой на правильность и разными вариантами написания:14-04-2019,14 - 04 - 2019,14. 04. 2019и т. п..(0[1-9]|[12][0-9]|3[01])[- .](январ(?:я)?|феврал(?:я)?|март(?:а)?|апрел(?:я)?|ма(?:я)?|июн(?:я)?|июл(?:я)?|август(?:а)?|сентябр(?:я)?|октябр(?:я)?|ноябр(?:я)?|декабр(?:я)?|0[1-9]|1[0-2])[- .](\d{2}|\d{4})—
Пояснение:
(0[1-9]|[12][0-9]|3[01])— день от 01 до 31.
[- .]— любой разделитель.
(январ(?:я)?|феврал(?:я)?|март(?:а)?|апрел(?:я)?|ма(?:я)?|июн(?:я)?|июл(?:я)?|август(?:а)?|сентябр(?:я)?|октябр(?:я)?|ноябр(?:я)?|декабр(?:я)?|0[1-9]|1[0-2])— месяц в именительном или родительном падеже. Используем (?:я)?, чтобы указать, что окончание "я" может быть опционально для слов в родительном падеже.
[- .]— любой разделитель.
(\d{2}|\d{4})— год, состоящий из двух или четырех цифр
([1][1-9])|([2-8][0-9]))— числа от 11 до 89 ;-)^б([1-9]\d{0,2}|[1-4]\d{3}|5000)$— реагируем на Б и число от 1 до 5000, например, б1, Б5000
Больше примеров (например, регулярки для номеров телефонов) в этой статье: → vk.com/@skyautome-regexp
