BrunoP.Blog

Eu odiava regex até precisar achar 4.000 e-mails num arquivo gigante

Passei horas filtrando um log na unha até uma linha de regex resolver em segundos. Parece feitiço, mas tem lógica — e te deixo um playground com presets brasileiros (CEP, telefone, CPF) pra você testar agora.

Esses dias eu tava no trabalho com uma tarefa que parecia simples: pegar uma exportação enorme — um .txt de log com umas centenas de milhares de linhas — e tirar dali todos os e-mails que apareciam no meio da bagunça. Sem padrão fixo, sem coluna bonitinha de planilha. E-mail solto no meio de carimbos de data, IDs, mensagens de erro, JSON quebrado, tudo junto.

Comecei do jeito que talvez você começaria: na unha. Ctrl+F, “@”, copia, cola numa outra aba, repete. Depois de uns vinte minutos eu já tinha ódio da minha própria vida e umas trinta linhas extraídas de um arquivo que tinha milhares. Foi aí que um colega olhou de canto e falou: “por que você não joga uma regex nisso?”.

Eu, que sempre torci o nariz pra regex — aquele monte de \d+([a-z]?)* que parece um gato andando no teclado —, engoli o orgulho e tentei. Colei uma linha. Quatro mil e poucos e-mails destacados na hora. O que eu ia levar a tarde inteira pra fazer saiu em literalmente segundos. Daquele dia em diante minha relação com regex mudou. Deixa eu te contar por quê — e no fim tem um playground pra você sentir isso na pele.

O que é regex, sem mistério

“Regex” é a abreviação de expressão regular: uma mini-linguagem só pra descrever padrões de texto. Em vez de procurar uma palavra exata, você descreve a forma do que quer encontrar. “Alguma coisa, arroba, alguma coisa, ponto, duas ou três letras” vira um e-mail. “Cinco dígitos, traço, três dígitos” vira um CEP.

A grande sacada é essa mudança de cabeça: você para de pensar “qual texto eu procuro” e passa a pensar “qual regra esse texto obedece”. Parece feitiço quando você lê de fora, mas por dentro é pura lógica — combinável, previsível, do tipo que o computador adora.

O alfabeto secreto (que cabe num guardanapo)

O que assusta na regex é a aparência, não a quantidade de coisa pra aprender. O essencial cabe em três grupinhos:

  • Classesque tipo de caractere. \d é um dígito, \w é letra/número/underline, \s é espaço, e . é “qualquer coisa”. Entre colchetes você monta a sua: [aeiou] casa qualquer vogal.
  • Quantificadoresquantas vezes. + é “uma ou mais”, * é “zero ou mais”, ? é “opcional”, e {2,3} é “de duas a três vezes”.
  • Âncoras e gruposonde e o quê. ^ é o começo da linha, $ é o fim, e os parênteses ( ) criam um grupo de captura — um pedacinho que você quer guardar separado.

Junta tudo e o tal e-mail vira algo como [\w.+-]+@[\w-]+\.[\w.-]+: “um ou mais caracteres de nome, arroba, o domínio, ponto, e o resto do domínio”. Lê em voz alta que faz sentido.

Duas curiosidades que me fizeram respeitar a regex

1. Ela é mais velha que quase tudo. A teoria por trás vem dos anos 1950, do matemático Stephen Kleene (aquele * chama-se “estrela de Kleene” em homenagem a ele). Quando o editor de texto QED e depois o ed do Unix popularizaram a ideia nos anos 60 e 70, regex já era um padrão maduro. Você está usando matemática de setenta anos atrás toda vez que filtra um log.

2. Ela tem um lado perigoso. Existe um ataque real chamado ReDoS (regex denial of service): certas expressões mal escritas, diante de uma entrada maliciosa, explodem em tempo de processamento e travam o servidor. O clássico é algo como (a+)+$. É um lembrete bonito de que “simples” não é o mesmo que “inofensivo” — e de que entender a ferramenta importa.

Minha opinião honesta, depois de anos usando

Regex não é pra tudo. Pra validar um e-mail de verdade, com todas as regras do mundo real, regex é uma furada — você acaba com um monstro ilegível que ainda erra casos. Pra fazer parsing de HTML então, nem pensar. Mas pra encontrar, extrair e transformar texto rapidinho — num log, num editor, num pipeline de dados — ela é insubstituível. É a diferença entre passar a tarde no Ctrl+F e resolver em uma linha.

O segredo que ninguém conta: você não precisa decorar regex. Precisa entender os três grupinhos lá de cima e ter um lugar pra testar ao vivo, vendo os matches acenderem enquanto você digita. O custo de errar cai pra zero, e aí você aprende de verdade. É exatamente isso que eu montei pra você.

Bora brincar 👇

Aqui embaixo tem um playground de regex que roda 100% no seu navegador, sem mandar nada pra servidor nenhum. Digite um padrão, escolha as flags, cole um texto e veja os trechos casados acenderem em tempo real. Tem presets com cara de Brasil — e-mail, CEP, telefone, CPF, data e URL — e um mini guia de bolso do lado. Erra à vontade: regex inválida só mostra um aviso amigável, nada quebra.

regex-playground.js

Roda 100% no seu navegador (RegExp nativo do JavaScript). Nada é enviado a servidor algum.

Se você brincou aí em cima e em algum momento pensou “peraí, isso é útil pra caramba” — foi exatamente assim que eu me senti naquele dia do log. Pego um problema chato do dia a dia, entendo a lógica por trás, e transformo numa ferramentinha que resolve de verdade. É mais ou menos assim que eu trabalho. Se você tem um projeto na cabeça — um produto, uma automação, uma ferramenta interna que ia poupar horas do seu time — eu adoraria ouvir. Bora trocar uma ideia?

Vamos conversar sobre seu projeto