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: da Teoria à Prática

\n

Expressões regulares (regex) são uma ferramenta poderosa para busca, substituição e validação de texto. Em Java, o trabalho com elas é implementado através do pacote java.util.regex, que inclui duas classes principais: Pattern (padrão) e Matcher (correspondente). Neste artigo, vamos analisar a sintaxe, os métodos principais e consolidar o conhecimento com exemplos reais de código.

\n

O material será útil tanto para iniciantes que estão conhecendo Java, quanto para desenvolvedores experientes que desejam revisar o assunto. Todos os exemplos podem ser executados diretamente na sua IDE.

\n\n

1. Fundamentos do Trabalho com Pattern e Matcher

\n

Qualquer trabalho com regex em Java começa com a compilação do padrão através de Pattern.compile(). Depois disso, é criado um objeto Matcher, que aplica o padrão à string.

\n

Vamos considerar um exemplo simples: encontrar todos os dígitos em um texto.

\n
import java.util.regex.Matcher;\nimport java.util.regex.Pattern;\n\npublic class RegexDemo {\n    public static void main(String[] args) {\n        String text = "Java versão 21 foi lançada em 2023";\n        String regex = "\\\\d+"; // um ou mais dígitos\n\n        Pattern pattern = Pattern.compile(regex);\n        Matcher matcher = pattern.matcher(text);\n\n        while (matcher.find()) {\n            System.out.println("Encontrado: " + matcher.group());\n        }\n    }\n}
\n

Saída do programa:

\n
Encontrado: 21\nEncontrado: 2023
\n

Observe a barra invertida dupla \\\\d — em Java, o literal de string requer o escape da barra invertida. Se no regex for necessário especificar \\d, no código escrevemos \\\\d.

\n\n

2. Sintaxe das Expressões Regulares: Metacaracteres e Quantificadores

\n

Para usar regex de forma eficaz, é importante memorizar os principais metacaracteres:

\n
    \n
  • . — qualquer caractere (exceto quebra de linha);
  • \n
  • \\\\d — dígito (equivalente a [0-9]);
  • \n
  • \\\\w — letra, dígito ou sublinhado ([a-zA-Z0-9_]);
  • \n
  • \\\\s — caractere de espaço em branco;
  • \n
  • ^ — início da string;
  • \n
  • $ — final da string.
  • \n
\n

Os quantificadores controlam a quantidade de repetições:

\n
    \n
  • + — uma ou mais vezes;
  • \n
  • * — zero ou mais vezes;
  • \n
  • ? — zero ou uma vez;
  • \n
  • {n} — exatamente n vezes;
  • \n
  • {n,m} — de n a m vezes.
  • \n
\n

Exemplo: vamos encontrar todas as palavras compostas apenas por letras latinas, com comprimento de 3 a 5 caracteres.

\n
String text = "Java regex example for beginners";\nString regex = "\\\\b[a-zA-Z]{3,5}\\\\b";\n\nPattern pattern = Pattern.compile(regex);\nMatcher matcher = pattern.matcher(text);\n\nwhile (matcher.find()) {\n    System.out.println(matcher.group());\n}\n// Saída: Java, regex, for
\n

O limite de palavra \\\\b impede correspondências parciais (por exemplo, "Java" não será parte de "JavaScript").

\n\n

3. Exemplos Práticos: Validação e Extração de Dados

\n

Vamos passar para tarefas que são frequentemente encontradas no desenvolvimento real.

\n\n

3.1. Validação de Endereço de Email

\n

Verificação simples: presença do caractere "@" e do domínio.

\n
public static boolean isValidEmail(String email) {\n    String regex = "^[\\\\w.-]+@[\\\\w.-]+\\\\.\\\\w{2,}$";\n    return Pattern.matches(regex, email);\n}\n\npublic static void main(String[] args) {\n    System.out.println(isValidEmail("user@example.com")); // true\n    System.out.println(isValidEmail("invalid-email"));    // false\n}
\n

O método Pattern.matches() verifica automaticamente a string inteira (equivalente a matcher.matches()).

\n\n

3.2. Extração de Números de Telefone

\n

Suponha que no texto apareçam números no formato "+7 (999) 123-45-67".

\n
String text = "Contato: +                

Blogs

Book Recommendations