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.