Menu
Coddy logo textTech

Emparelhamento de Padrões com Regex

Parte da seção Lógica e Fluxo do Journey de Java da Coddy — lição 47 de 59.

As classes Pattern e Matcher fornecem ferramentas poderosas para operações de regex em Java. Primeiro, vamos entender como usá-las:

Crie um pattern usando Pattern.compile():

Pattern pattern = Pattern.compile("cat");
// Cria um padrão para encontrar "cat"

Crie um matcher para o seu texto:

String text = "The cat and dog";
Matcher matcher = pattern.matcher(text);
// Creates a matcher for the text

Agora você pode encontrar correspondências usando matcher.find():

while (matcher.find()) {
   System.out.println("Found at: " + matcher.start());
}

Após executar o código acima, a saída é: Found at: 4

Entendendo os métodos:

  • <b>matcher.find()</b> - Procura pela próxima ocorrência do padrão no texto
    • Retorna true se uma correspondência for encontrada
    • Retorna false se não houver mais correspondências
    • É por isso que usamos em um loop while - para encontrar todas as ocorrências
  • <b>matcher.start()</b> - Retorna o índice inicial (posição) da última correspondência encontrada por find()
    • No nosso exemplo, "cat" começa no índice 4 em "The cat and dog"
    • Deve ser chamado após um find() bem-sucedido

Exemplo com múltiplas correspondências:

Pattern pattern = Pattern.compile("cat");
Matcher matcher = pattern.matcher("cat and cat");

while (matcher.find()) {
   System.out.println("Found at: " + matcher.start());
}
// Output:
// Found at: 0
// Found at: 8
challenge icon

Desafio

Fácil

Crie um método chamado findWords que recebe dois argumentos:

  1. Uma String (text) para pesquisar em
  2. Uma String (word) para encontrar

O método deve:

  1. Usar Pattern e Matcher para encontrar todas as ocorrências da palavra
  2. Retornar uma string contendo as posições onde a palavra foi encontrada
  3. As posições devem ser separadas por espaços

As mensagens de retorno devem ser:

  • Se qualquer entrada for null: return "Invalid input"
  • Se a palavra não for encontrada: return "Not found"
  • Se encontrada: return positions (e.g., "4 10 15")

Folha de consulta

As classes Pattern e Matcher fornecem ferramentas poderosas para operações com expressões regulares em Java.

Crie um pattern usando Pattern.compile():

Pattern pattern = Pattern.compile("cat");
// Creates a pattern to find "cat"

Crie um matcher para o seu texto:

String text = "The cat and dog";
Matcher matcher = pattern.matcher(text);
// Creates a matcher for the text

Encontre correspondências usando matcher.find():

while (matcher.find()) {
   System.out.println("Found at: " + matcher.start());
}

Métodos principais:

  • <b>matcher.find()</b> - Pesquisa pela próxima ocorrência do padrão
    • Retorna true se encontrado, false se não houver mais correspondências
    • Use em um loop para encontrar todas as ocorrências
  • <b>matcher.start()</b> - Retorna o índice inicial da última correspondência encontrada
    • Chame após um find() bem-sucedido

Experimente você mesmo

import java.util.Scanner;
import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class Main {
    public static String findWords(String text, String word) {
        // Escreva seu código aqui
    }
    
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String text = scanner.nextLine();
        String word = scanner.nextLine();
        
        if (text.equals("null")) text = null;
        if (word.equals("null")) word = null;
        
        System.out.println(findWords(text, word));
    }
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica e Fluxo