Lição 1
O que é uma expressão regular?
Padrões como programas de busca e onde regex aparece no desenvolvimento.
Uma expressão regular (regex) é uma linguagem compacta para descrever padrões de texto. Em vez de buscar uma string exata como error, você busca uma forma: dígitos, valores entre aspas, tokens parecidos com e-mail ou linhas de log que seguem um template.
Padrões, não texto simples
Pense em regex como um programinha executado por um motor de regex:
- Você fornece um padrão (a regex)
- Você fornece texto de entrada (uma string, trecho de arquivo ou buffer)
- O motor retorna correspondências — substrings que encaixam no padrão — e opcionalmente grupos de captura
Intuição de exemplo: \d{4}-\d{2}-\d{2} descreve “quatro dígitos, hífen, dois dígitos, hífen, dois dígitos” — uma forma comum de data ISO. Não é o mesmo que buscar uma data fixa.
Onde desenvolvedores usam regex
Usos comuns no mundo real:
- Dicas de validação — formatos de e-mail, telefone, slug (muitas vezes combinados com validadores mais robustos)
- Parsing de logs — extrair timestamps, códigos de status ou IDs de requisição de linhas não estruturadas
- Refatorações — buscar e substituir em muitos arquivos com grupos de captura
- Destaque de sintaxe e linters — tokenizar código (geralmente com padrões cuidadosamente ajustados)
- Regras de roteamento e rewrite — blocos de location Apache/Nginx, algumas regras de path em frameworks
Regex se destaca em estrutura local no texto. É uma má escolha para HTML aninhado, documentos JSON completos ou linguagens de programação arbitrárias — use parsers para isso.
Motores diferem
O RegExp do JavaScript, o re do Python, PCRE em PHP/Ri grep e a crate regex do Rust não se comportam de forma idêntica. As diferenças incluem:
- Quais metacaracteres existem e como Unicode é tratado
- Suporte a lookahead/lookbehind
- Greediness padrão e regras de fim de linha
Quando copiar um padrão de outra linguagem, teste de novo no seu motor alvo.
Conclusão
Uma regex descreve famílias de strings, não uma string só. As próximas lições constroem o vocabulário — literais, classes, quantificadores, flags e grupos — que compõem essas famílias.