Regex (регулярные выражения) — это язык шаблонов для поиска в тексте и манипуляций с текстом.
Для чего он используется
Regex используется в Fail2ban. Это программа для защиты серверов от атак, которая находит в логах информацию о подозрительных действиях и устраняет угрозу, блокируя IP-адреса, с которых осуществляются атаки.
Regex можно использовать в Linux-утилитах find и grep для поиска файлов и данных.
Как использовать regex
Для начала будут даны простые команды:
^ — начало строки
$ — конец строки
. (точка) — один любой символ
Символы, которые указывают на количество повторений символа, стоящего перед ними
? — ноль или одно
+ — одно или много
* — ноль или много
Примеры использования
Для выбора одиночного слова достаточно просто написать его:

Так же и с целыми фразами:

Пример со спецсимволами
Что делать, если нам нужно выбрать слово в начале строки? Тут мы и будем использовать (^):

То же самое и с поиском в конце строки ($):

Ой, почему не выбралась строка, хотя там есть слово «развития»? Потому что Regex ищет полное совпадение, а в конце строки есть точка. Вот тут и пригодится точка в regex:

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

Чтобы это исправить, нам нужно экранировать спецсимвол. Делается это для того чтобы парсер regex воспринимал его не как спецсимвол, а как просто символ.
Добавляем перед нашей точкой знак экранирования \ и погнали:

Пример с символами для указания количества повторений
Иногда полезно бывает выбрать строку полностью для анализа, сделать это можно вот так (Не забываем экранировать точки, чтобы упростить работу парсеру) :

В данном примере используется комбинация «точки» и «плюс», что дает нам выбрать все символы после IP до конца строки («Любой символ» повторяется один или более раз).
Предлагаю выполнить простое задание, для того чтобы усвоить материал. Рекомендую открыть лог и скопировать его в сайт из блока «Полезные ссылки» для удобства.
Задание (клик чтобы открыть)
Вы в роли DevOps инженера, и ваша команда решила переехать на другой хостинг в ходе чего пропали некоторые endpoint (Выдают 404).
Вам нужно проанализировать лог вебсервера Nginx и используя регулярные выражения отсеять строки с «Not Found» (код 404) от «OK»(код 200).
После чего, ваша задача на этом закончена, разработчик сам разберется 🙂
Полезные ссылки
- regex101.com — Тестер regex выражений, позволяет увидеть как оно отрабатывает, увидеть скорость выполнения, а также проанализировать процесс исполнения.


Добавить комментарий