Regex para Iniciantes: Como Escrever Expressões Regulares
Regex para Iniciantes
Expressões regulares — regex — são padrões que descrevem texto. Com regex, você pode pesquisar strings, validar entrada, extrair dados e realizar localizar-e-substituir complexos usando uma única expressão compacta. Uma vez que você entende os fundamentos, regex se torna uma das ferramentas mais poderosas do seu kit de ferramentas de programação.
O Que É uma Expressão Regular?
Uma regex é uma sequência de caracteres que define um padrão de busca. O padrão \d{3}-\d{2}-\d{4} corresponde a um número de Seguro Social dos EUA: três dígitos, hífen, dois dígitos, hífen, quatro dígitos.
Mecanismos de regex existem em praticamente todas as linguagens de programação — JavaScript, Python, Java, Ruby, Go — todas com suporte integrado.
Caracteres Literais
A maioria dos caracteres corresponde a si mesmos. O padrão cat corresponde à string literal "cat" onde quer que ela apareça.
Pattern: cat
Matches: "cat" in "The cat sat on the mat."
Matches: "cat" in "catalog"
A correspondência literal é direta, mas limitada. O verdadeiro poder vem dos metacaracteres.
Metacaracteres
Esses caracteres têm significado especial e devem ser escapados com \ para corresponder literalmente:
. ^ $ * + ? { } [ ] \ | ( )
Classes de Caracteres
Classes de caracteres correspondem a um caractere de um conjunto.
Notação com Colchetes
| Padrão | Correspondências |
|---------|---------|
| [aeiou] | Qualquer vogal |
| [0-9] | Qualquer dígito |
| [a-zA-Z] | Qualquer letra |
| [^0-9] | Qualquer caractere que NÃO seja um dígito |
Classes Predefinidas
| Abreviação | Descrição |
|-----------|-------------|
| \d | Qualquer dígito (igual a [0-9]) |
| \w | Letra, dígito ou sublinhado |
| \s | Espaço, tabulação, nova linha |
| \D | Qualquer não dígito |
| \W | Qualquer caractere que não seja de palavra |
| \S | Qualquer caractere que não seja espaço em branco |
| . | Qualquer caractere exceto nova linha |
Quantificadores
Quantificadores controlam quantas vezes o elemento anterior deve aparecer.
| Quantificador | Significado | Exemplo | Correspondências |
|------------|---------|---------|---------|
| * | Zero ou mais | a* | "", "a", "aa" |
| + | Um ou mais | a+ | "a", "aa", "aaa" |
| ? | Zero ou um | colou?r | "color", "colour" |
| {3} | Exatamente N | \d{3} | "123" |
| {2,4} | Entre N e M | \d{2,4} | "12", "123", "1234" |
Exemplos
\d+ → "42" in "Answer is 42"
https?:// → "http://" and "https://"
Âncoras
Âncoras correspondem a posições, não a caracteres.
| Âncora | Significado |
|--------|---------|
| ^ | Início da string |
| $ | Fim da string |
| \b | Limite de palavra |
| \B | Limite de não palavra |
^hello → matches "hello" only at the start
end$ → matches "end" only at the end
\bword\b → matches "word" as a whole word, not inside "sword"
Grupos e Alternação
Grupos de captura ( ) extraem partes correspondentes:
(\d{3})-(\d{4}) → "555-1234", captures "555" in group 1, "1234" in group 2
Grupos não capturantes (?: ) agrupam sem extrair:
(?:https?|ftp):// → "http://", "https://", "ftp://"
Alternação | atua como OU:
cat|dog|bird → matches "cat", "dog", or "bird"
Exemplos Práticos de Regex
| Caso de Uso | Padrão |
|----------|---------|
| Telefone dos EUA | \d{3}-\d{3}-\d{4} |
| E-mail (simples) | \S+@\S+\.\S+ |
| Endereço IP | \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} |
| Hashtag | #[a-zA-Z]\w* |
| Hora (HH:MM) | [01]\d|2[0-3]:[0-5]\d |
Como Testar um Padrão de Regex
Sempre teste padrões interativamente:
- Insira seu padrão de regex.
- Insira uma string de teste.
- Veja quais partes correspondem em tempo real.
- Ajuste e repita.
Use a ferramenta regex tester para experimentar padrões. Ela destaca correspondências, mostra grupos de captura e ajuda você a entender exatamente o que cada parte da sua expressão faz.