O Regex é usado para diversas linguagens e possui diversas utilidades, aqui vamos usa o Regex como o foco em SIEM.

É possível realizar buscas de dados, parser de logs, condições de regras, entre outras opções. Antes de tudo, vamos entender um pouco sobre os comandos básicos e alguns exemplos:
Caracteres
Expressão | Descrição |
^ | Negação – Usado para negar a expressão |
. | Curinga – Qualquer caractere |
* | 0 ou mais caracteres |
? | 0 ou 1 caracteres |
+ | 1 ou mais caracteres |
{ } | Delimita a quantidade de ocorrências |
[ ] | Qualquer caractere incluso no conjunto |
( ) | Define um grupo, para efeito de aplicação de quantificador |
| | Usado como alternativa opção A OU opção B |
Obs: o caractere ^ possui outras funções, mas nesse momento vamos focar nele como negação apenas.
Comandos básicos
Expressão | Descrição |
[a-z] | Qualquer letra minúscula |
[A-Z] | Qualquer letra maiúscula |
[0-9] | Qualquer número |
\d | = [0-9] |
\D | = [^0-9] |
\w | Alfanumérico = [a-zA-Z0-9] |
\W | Nega alfanumérico |
Exemplos
Log: <01/01/2000> hostname: ABCD Event:XYZ IPV4:1.10.100.10 IPV6: 2001:0DB8:AD1F:25E2:CADE:CAFE:F0CA:84C1
Data: 01/01/2000
- Ex 01:\d\d/\d\d/\d\d\d\d – Usando apenas o parâmetro \d conforme o padrão da data
- Ex 02:\d{2}/\d{2}/\d{4} – Usando o \d mais {} para delimitar a quantidade de números
- Ex 03:[0-3]\d\W[0-1]\d\W\d{4} – Delimita que o primeiro algarismo seja 0,1,2 ou 3, sendo assim não será aceito a data com dia 40 ao 99 o parâmetro \W para um caractere não alfanumérico e o mês delimitando o primeiro algarismo em 0 ou 2.
IPV4: 1.10.100.10
- Ex 01: \d{1,3}.\d{1,3}.\d{1,3}.\d{1,3} – \d para caractere numérico delimitado de 1 à 3 separados por ponto
- Ex 02: \d{1,3}\W\d{1,3}\W\d{1,3} – \d separado por caractere não alfanumérico \W
- Ex 03: IPV4(.*) – “coletar” o que tiver após a palavra IPV4 e antes de IPV6
IPV6: 2001:0DB8:AD1F:25E2:CADE:CAFE:F0CA:84C1
- Ex 01: IPV6(.*) – “coletar” tudo após a palavra IPV6
- Ex 02: (([0-9a-fA-F]{1,4}):([0-9a-fA-F]{1,4}):([0-9a-fA-F]{1,4}):([0-9a-fA-F]{1,4}):([0-9a-fA-F]{1,4}):([0-9a-fA-F]{1,4}):([0-9a-fA-F]{1,4}):([0-9a-fA-F]{1,4})) – Irá “coletar” 4 caractere de 0 à 9 ou de A à F tanto minúsculo quanto maiúsculos em uma sequência de 8 vezes
Obs: Dependendo do SIEM pode ter que alterar ou movimentar os parênteses