Aula 05 – Quantificadores 🔢
Até agora, cada símbolo que escrevemos representava exatamente uma posição no texto. Com os Quantificadores, podemos dizer: "Encontre este padrão várias vezes seguidas".
➕ Os Quantificadores Básicos
Eles são colocados logo após o caractere ou conjunto que você quer repetir.
| Símbolo | Significado | Exemplo (a...) |
|---|---|---|
* | Zero ou mais vezes. | a* encontra "", "a", "aaaa" |
+ | Uma ou mais vezes. | a+ encontra "a", "aaaa" (mínimo 1) |
? | Opcional (Zero ou uma vez). | a? encontra "" ou "a" |
🎯 Quantidade Exata {n,m}
Se você precisa de um controle mais fino, usamos as chaves.
{n}: Exatamentenvezes. (Ex:\d{3}para 3 dígitos).{n,}: No mínimonvezes. (Ex:\w{5,}para palavras longas).{n,m}: Entrenemvezes. (Ex:\d{2,4}para anos com 2 ou 4 dígitos).
📊 Funcionamento Visual
graph TD
Start["Padrao: \d+"] --> Case1["Texto: '1' -> Match: '1'"]
Start --> Case2["Texto: '123' -> Match: '123'"]
Start --> Case3["Texto: 'abc' -> No Match"] 🧠 Guloso vs. Preguiçoso (Greedy vs Lazy)
Por padrão, os quantificadores são gulosos: eles tentam pegar o máximo de texto possível.
- Texto:
"capítulo 1" e "capítulo 2" - Padrão:
".*"-> Pegará desde a primeira aspa até a última. - Padrão Preguiçoso:
".*?"-> Pegará apenas o primeiro conteúdo entre aspas.
Dica
Adicione o ? após um quantificador (como +? ou *?) para torná-lo preguiçoso.
💻 Exemplo em TermynalJS
$ # Buscando palavras com 5 a 8 letras $ grep -E "\b\w{5,8}\b" texto.txt $ Brasil $ Programas $ $ # Validando um ano (4 dígitos) $ echo "2024" | grep -P "^\d{4}$" $ 2024
📝 Exercícios de Fixação
- Básico: Crie um Regex que encontre a palavra "casa" seguida de um ou mais espaços.
- Básico: Use o
?para encontrar tanto "cor" quanto "color" (em inglês, color vs colour). - Intermediário: Crie um padrão para validar um número de telefone simples com 8 ou 9 dígitos (ex:
988887777). - Intermediário: Use
\d{1,3}para encontrar todos os números entre 1 e 999 em um texto. - Desafio: No Regex101, tente capturar tudo o que está dentro de uma tag HTML
<div>...</div>de forma que ele pare no primeiro fechamento de tag (preguiçoso).
🚀 Mini-Projeto: Validador de Usuário
Objetivo: Validar um nome de usuário que deve: - Começar com uma letra. - Ter entre 5 e 12 caracteres alfanuméricos.
- Dica: Use
[a-zA-Z]\w{4,11}. - Por que
{4,11}? Porque a primeira letra já conta como 1 caractere! - Teste com:
admin,user123,a,meu_usuario_muito_longo.