Краткий гайд по регуляркам
Примечание: Создавать и проверять регулярное выражение рекомендуется на сайте: 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