Skip to main content

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

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

Доп чтиво:

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

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