Skip to main content

CookBook по регулярным выражениям (REGEX)

Проверка работы ругулярокрегулярок (выставить флаги gm):

Доп чтиво:

    https://habr.com/ru/articles/545150/  https://regex.sorokin.engineer/ru/latest/regular_expressions.html 

    Простейшие приемы, практику отработаем на тестовом сообщении:

    Message from 127.0.0.1 (localhost): KUMA is the best SIEM in 2023!

    Захватить строку KUMA

    KUMA Ищется полное соответствие строке KUMA.

    image.png

    Захватить строку содержащую только буквы

    [A-Za-z]+ Ищем группу ([]) символов с большими (A-Z) и маленькими (a-z) буквами от одной и более (+).

    image.png

    Захватить строку содержащую только числа

    \d+ Ищем по токену \d, что является эквивалентом [0-9] от одного и более вхождений (+).

    image.png

    Захватить строку внутри круглых скобок

    \((\w+)\) Ищем по токену \w, что является эквивалентом [a-zA-Z0-9_] от одного и более вхождений (+), при этом экранируем круглые скобки с помощью обратного слеша \ и строку нашу определяем в группу круглыми скобками ()

    image.png

     

    Захватить строку до двоеточия

    ^[^\:]+ Ищем с начала строки ^, далее захватываем в группе все кроме двоеточия (символ двоеточия экранирован) [^\:] от одного и более вхождений (+)

    image.png

     

    Захватить строку после двоеточия

    [^\:]+$ Такая, подобная предствленной выше, конструкция не подойдет, т.к. она будет очень емокой (633 шага). Ищем все кроме двоеточия (символ двоеточия экранирован) [^\:] от одного и более вхождений (+), но до конца строки $

    image.png

    В нашем случае лучше использовать следующее

    \:(.*)$ Ищем в строке двоеточие \:, далее захватываем все символы от нуля и более вхождений (*), и берем все что нам нужно в группу ()

    image.png

    Захватить IP-адрес

    \d+\.\d+\.\d+\.\d+ Ищем числа от одного и более \d+, с точкой и так 4 раза 

    Untitled.png

    Захватить слова состоящие из 4 букв

    \b[a-zA-Z]{4}\b Ищем группу 4 символов из букв и разграничиваем их (boundary) \b 

    image.png

    Захватить слова состоящие от 3 до 4 букв

    \b[a-zA-Z]{3,4}\b Ищем группу 4 символов из букв и разграничиваем их (boundary) \b 

    image.png