Regex (Regular Expressions) e uma ferramenta poderosa para buscar, validar e substituir texto. Programadores, analistas de dados e profissionais de TI usam regex diariamente. Se voce quer aprender do zero, este guia e pra voce.
O que e regex?
Regex e uma sequencia de caracteres que forma um padrao de busca. Em vez de procurar uma palavra exata, voce procura por um formato.
Exemplos de padroes:
- qualquer numero de telefone:
\(\d{2}\)\s\d{4,5}-\d{4}; - qualquer e-mail:
[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}; - qualquer data DD/MM/AAAA:
\d{2}/\d{2}/\d{4}.
Sintaxe basica
Caracteres literais
abc encontra "abc" no texto.
Metacaracteres
| Simbolo | Significado |
|---|---|
. | Qualquer caractere (exceto nova linha) |
\d | Digito (0-9) |
\w | Caractere alfanumerico (a-z, 0-9, _) |
\s | Espaco em branco |
\D | Nao digito |
\W | Nao alfanumerico |
\S | Nao espaco |
Quantificadores
| Simbolo | Significado |
|---|---|
* | Zero ou mais vezes |
+ | Uma ou mais vezes |
? | Zero ou uma vez |
{n} | Exatamente n vezes |
{n,m} | De n a m vezes |
Classes de caracteres
| Padrao | Significado |
|---|---|
[abc] | a, b ou c |
[a-z] | De a a z |
[0-9] | De 0 a 9 |
[^abc] | Qualquer coisa exceto a, b ou c |
Ancoras
| Simbolo | Significado |
|---|---|
^ | Inicio da linha |
$ | Fim da linha |
\b | Limite de palavra |
Exemplos praticos
Validar CPF
^\d{3}\.\d{3}\.\d{3}-\d{2}$
Aceita: 123.456.789-00
Validar e-mail simples
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
Extrair numeros de um texto
\d+
Encontra todos os numeros: "Pedido 123, total R$ 456" → 123, 456.
Encontrar URLs
https?://[^\s]+
Validar senha forte
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$
Exige: minuscula, maiuscula, numero, caractere especial, minimo 8 caracteres.
Formatar telefone
Para transformar "11999887766" em "(11) 99988-7766":
Buscar: (\d{2})(\d{5})(\d{4})
Substituir: ($1) $2-$3
Grupos e capturas
Parenteses criam grupos:
(\d{2})/(\d{2})/(\d{4})
Captura: dia, mes, ano separadamente. Pode usar $1, $2, $3 na substituicao.
Grupos nao-capturadores
(?:https?|ftp)://
O ?: indica que o grupo nao precisa ser capturado.
Lookahead e Lookbehind
Lookahead positivo
\w+(?=@)
Encontra texto antes do @: "user@email" → "user".
Lookahead negativo
\d+(?!\d)
Encontra o ultimo numero da sequencia.
Flags
| Flag | Efeito |
|---|---|
g | Global (encontra todas as ocorrencias) |
i | Case insensitive (nao diferencia maiusculas) |
m | Multiline (^ e $ funcionam por linha) |
Ferramenta para testar regex
Use o Regex Lab para testar seus padroes em tempo real:
- Acesse o Regex Lab;
- Digite o texto de teste;
- Escreva a expressao regular;
- Veja os matches destacados;
- Teste grupos de captura;
- Exporte o padrao para sua linguagem.
Regex por linguagem
JavaScript
const regex = /\d+/g;
const matches = texto.match(regex);
Python
import re
matches = re.findall(r'\d+', texto)
PHP
preg_match_all('/\d+/', $texto, $matches);
Java
Pattern p = Pattern.compile("\\d+");
Matcher m = p.matcher(texto);
Erros comuns
- Esquecer de escapar:
.e metacaractere. Para encontrar ponto literal, use\.; - Nao usar ancoras: sem
^e$, regex encontra parcialmente; - Ganancia vs preguica:
*e+sao gananciaos (pegam o maximo). Use*?ou+?para modo preguicoso; - Performance: padroes com muitos
.*podem ser lentos (catastrophic backtracking).
Perguntas frequentes
Regex e igual em todas as linguagens? Quase. A sintaxe basica e a mesma, mas ha pequenas diferencas em suporte a features avancadas.
Preciso memorizar toda a sintaxe? Nao. Consulte referencias quando precisar. Com pratique, os padroes mais comuns ficam naturais.
Regex funciona com caracteres acentuados? Sim, mas depende da flag Unicode. Use \p{L} para qualquer letra (incluindo acentos).
Qual a diferenca entre regex guloso e preguicoso? Guloso pega o maximo possivel. Preguicoso (com ?) pega o minimo.
Teste seus padroes agora no Regex Lab e aprenda regex na pratica.