Regex Cheat Sheet: A referência definitiva
As Expressões Regulares (Regex) são incrivelmente poderosas, mas famosas por serem difíceis de dominar. Quer esteja a validar um endereço de e-mail, a extrair dados ou a pesquisar código, ter uma Regex Cheat Sheet fiável pode poupar-lhe horas de frustração.
Neste guia, analisamos cada componente regex, desde caracteres básicos a lookarounds complexos, com explicações visuais e exemplos práticos.
1. Metacaracteres principais
Estes são os blocos de construção de qualquer padrão regex.
| Metacaractere | Descrição | Exemplo |
|---|---|---|
. |
Corresponde a qualquer carácter individual, exceto nova linha | a.b corresponde a acb, a1b |
\ |
Escapa um carácter especial | \. corresponde a um . literal |
| |
Alternância (OU) | cat|dog corresponde a cat ou dog |
[] |
Conjunto de caracteres (qualquer carácter lá dentro) | [aeiou] corresponde a qualquer vogal |
[^] |
Conjunto de caracteres negado | [^0-9] corresponde a qualquer carácter não numérico |
2. Quantificadores: Controlar a frequência
Os quantificadores dizem ao motor regex quantas vezes um carácter ou grupo deve aparecer.
| Quantificador | Descrição | Exemplo |
|---|---|---|
* |
0 ou mais vezes | a* corresponde a ``, a, aa |
+ |
1 ou mais vezes | a+ corresponde a a, aa |
? |
0 ou 1 vez (opcional) | a? corresponde a `` ou a |
{n} |
Exatamente n vezes |
a{3} corresponde a aaa |
{n,} |
n ou mais vezes |
a{2,} corresponde a aa, aaa |
{n,m} |
Entre n e m vezes |
a{2,4} corresponde a aa, aaa, aaaa |
3. Classes de caracteres: Atalhos comuns
| Classe | Descrição | Equivalente |
|---|---|---|
\d |
Qualquer dígito | [0-9] |
\D |
Qualquer carácter não numérico | [^0-9] |
\w |
Qualquer carácter de palavra (alfanumérico + _) |
[a-zA-Z0-9_] |
\W |
Qualquer carácter que não seja de palavra | [^a-zA-Z0-9_] |
\s |
Qualquer espaço em branco (espaço, tabulação, nova linha) | [ \t\n\r\f\v] |
\S |
Qualquer carácter que não seja espaço em branco | [^ \t\n\r\f\v] |
4. Âncoras: Definir limites
| Âncora | Descrição | Exemplo |
|---|---|---|
^ |
Início da string / linha | ^Olá |
$ |
Fim da string / linha | Mundo$ |
\b |
Limite de palavra | \bcat\b (corresponde a "cat" mas não a "category") |
\B |
Limite não de palavra | \Bcat (corresponde a "category") |
5. Grupos e Captura
| Sintaxe | Descrição | Exemplo |
|---|---|---|
(...) |
Grupo de captura | (abc)+ corresponde a abcabc |
(?:...) |
Grupo de não-captura | (?:abc)+ |
(?<name>...) |
Grupo de captura nomeado | (?<id>\d+) |
\1 |
Retroreferência ao grupo #1 | (\w)\1 corresponde a aa, bb |
6. Lookaround: Filtragem avançada
Os lookarounds permitem-lhe encontrar um padrão apenas se este for (ou não for) seguido ou precedido por outro padrão, sem incluir esse padrão na correspondência.
| Sintaxe | Nome | Descrição |
|---|---|---|
(?=...) |
Lookahead positivo | Seguido por ... |
(?!...) |
Lookahead negativo | NÃO seguido por ... |
(?<=...) |
Lookbehind positivo | Precedido por ... |
(?<!...) |
Lookbehind negativo | NÃO precedido por ... |
7. Visualizar Regex com diagramas ferroviários
Padrões regex complexos podem rapidamente tornar-se ilegíveis. Os Diagramas Ferroviários são uma forma visual de representar o fluxo de uma expressão regular.
Imagine uma linha de comboio:
- A linha divide-se numa alternância (
|). - A linha faz um loop para um quantificador (
*,+). - A linha passa por uma caixa de grupo.
Utilizar um visualizador ajuda-o a depurar erros de lógica, especialmente ao lidar com grupos aninhados ou quantificadores complexos.
8. Exemplos práticos
Validação de e-mail (Simplificada)
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
Palavra-passe forte (Exemplo Lookahead)
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$
(Requer pelo menos uma minúscula, uma maiúscula, um dígito e 8+ caracteres)
Número de telefone (Formato US)
^(\+\d{1,2}\s)?\(?\d{3}\)?[\s.-]\d{3}[\s.-]\d{4}$
9. Perguntas Frequentes (FAQ)
Q: Qual é a diferença entre correspondência "Greedy" (gananciosa) e "Lazy" (preguiçosa)?
A: Por padrão, os quantificadores são greedy—eles correspondem ao máximo possível. Adicionar um ? após um quantificador (ex: .*?) torna-o lazy (ou non-greedy), significando que corresponde ao mínimo possível.
Q: Como faço uma pesquisa insensível a maiúsculas e minúsculas?
A: A maioria dos motores regex utiliza uma flag (normalmente i) para ativar a insensibilidade. Por exemplo, /ola/i corresponde a Olá, OLA e ola.
Q: O que é backtracking e porque é que é importante?
A: O backtracking ocorre quando o motor regex tenta um caminho, falha e "retrocede" para tentar outro. Padrões complexos com muitos quantificadores aninhados podem levar ao Backtracking Catastrófico, que pode bloquear a sua aplicação ou servidor.
Teste os seus padrões no Tool3M
- Testador Regex: Testes regex em tempo real com realce e depuração visual.
- Formatador JSON: Utilize regex para pesquisar e filtrar os seus grandes conjuntos de dados JSON.
- Conversor de Caixa: Limpe o seu texto antes de aplicar filtros regex.