Логотип для basic regex

Регулярные выражения для начинающих

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 выражений, позволяет увидеть как оно отрабатывает, увидеть скорость выполнения, а также проанализировать процесс исполнения.

Мы в Telegram

Один ответ

  1. Аватар пользователя Benjamin Franklin
    Benjamin Franklin

    really regularly

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

More posts