Expressões regulares em Java com exemplos: na prática

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Expressões regulares em Java: guia completo com exemplos de código



Expressões regulares (regex) são uma ferramenta poderosa para buscar, extrair e substituir texto por padrão. Em Java, o trabalho com expressões regulares é implementado através de duas classes principais: java.util.regex.Pattern (compilação do padrão) e java.util.regex.Matcher (execução da busca). Neste artigo, vamos analisar a sintaxe, os métodos principais e ver exemplos práticos que ajudarão você a usar regex com confiança em projetos reais.



1. Fundamentos do trabalho com expressões regulares em Java

Antes de passar aos exemplos, vamos analisar as classes-chave e sua interação.



Classe Pattern

Pattern é a representação compilada de uma expressão regular. Ela é criada pelo método estático Pattern.compile(). Sem compilação, não é possível usar regex.



Classe Matcher

Matcher é o "motor" que executa a busca pelo padrão especificado em uma string. É criado pelo método pattern.matcher(inputString).



Sintaxe básica de metacaracteres

  • . — qualquer caractere (exceto quebra de linha)
  • \\d — dígito (0-9)
  • \\w — letra, dígito ou sublinhado
  • \\s — caractere de espaço em branco
  • ^ — início da string
  • $ — fim da string
  • * — 0 ou mais repetições
  • + — 1 ou mais repetições
  • ? — 0 ou 1 repetição
  • {n,m} — de n a m repetições
  • [] — conjunto de caracteres (por exemplo, [a-z] — qualquer letra minúscula)
  • () — grupo de captura


Exemplo 1: Verificação simples de número de telefone

import java.util.regex.*;

public class PhoneValidator { public static void main(String[] args) { String phone = "+7 (999) 123-45-67"; String regex = "^\\\\+7\\\\s\\\\(\\\\d{3}\\\\)\\\\s\\\\d{3}-\\\\d{2}-\\\\d{2}$"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(phone); if (matcher.matches()) { System.out.println("Número válido"); } else { System.out.println("Número não corresponde ao formato"); } }}


2. Métodos do Matcher: matches(), find() e grupo de captura

Entender a diferença entre matches() e find() é a chave para trabalhar com regex em Java com sucesso.



  • matches() — verifica se toda a string corresponde ao padrão por completo (adiciona implicitamente ^ e $).
  • find() — busca uma substring que corresponda ao padrão em qualquer lugar da string.
  • group() — retorna a correspondência encontrada ou o valor do grupo de captura.


Exemplo 2: Extração de endereços de email de um texto usando find() e grupos

import java.util.regex.*;

public class EmailExtractor { public static void main(String[] args) { String text = "Contatos: support@example.com, info@test.org e admin@site.net."; String regex = "([a-zA-Z0-9._%+-]+)@([a-zA-Z0-9.-]+)\\\\.([a-zA-Z]{2,})"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(text); while (matcher.find()) { System.out.println("Email completo: " + matcher.group()); System.out.println("Nome de usuário: " + matcher.group(1)); System.out.println("Domínio: " + matcher.group(2)); System.out.println("Zona: " + matcher.group(3)); System.out.println("---"); } }}


Exemplo 3: Validação de senha com matches()

Requisitos: de 8 a 20 caracteres, pelo menos uma letra maiúscula, pe

Blogs

Book Recommendations