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 textAgora 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
truese uma correspondência for encontrada - Retorna
falsese não houver mais correspondências - É por isso que usamos em um loop
while- para encontrar todas as ocorrências
- Retorna
<b>matcher.start()</b>- Retorna o índice inicial (posição) da última correspondência encontrada porfind()- 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: 8Desafio
FácilCrie um método chamado findWords que recebe dois argumentos:
- Uma String (
text) para pesquisar em - Uma String (
word) para encontrar
O método deve:
- Usar Pattern e Matcher para encontrar todas as ocorrências da palavra
- Retornar uma string contendo as posições onde a palavra foi encontrada
- 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 textEncontre 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
truese encontrado,falsese não houver mais correspondências - Use em um loop para encontrar todas as ocorrências
- Retorna
<b>matcher.start()</b>- Retorna o índice inicial da última correspondência encontrada- Chame após um
find()bem-sucedido
- Chame após um
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));
}
}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
1Arrays Multidimensionais
Básicos de Arrays 2DAcessando Elementos de Arrays 2DLoops Aninhados com Arrays 2DResumo - Arrays 2DAdição e Subtração de MatrizesArrays EscalonadosArrays 3D e AlémPadrões Comuns de Arrays 2DResumo - Tudo Sobre Arrays2HashMap Parte 1
O que é um HashMap?Declarar um HashMapAcessando ValoresVerificar se a Chave ExisteModificando DicionáriosResumo - HashMap5HashSet Parte 2
Mat. - União de HashSetsMat. - Interseção de HashSetMat. - Diferença de ConjuntosMat. - Diferença SimétricaSubconjuntos e SuperconjuntosIterando Sobre Conjuntos8Operações Avançadas com Strings
Básicos do StringBuilderIntrodução ao StringBufferBásicos de Expressões RegularesEmparelhamento de Padrões com RegexTokenizador de StringsFormatação Avançada de Strings3HashMap Parte 2
Métodos do HashMapIterar com keySet()Iterar com entrySet()HashMap AninhadoResumo - Gerenciar ArmazémResumo - Operações do HashMap6Fluxo de Controle Avançado
Declarações RotuladasExpressão SwitchCorrespondência de PadrõesCláusulas de GuardaResumo - Fluxo de Controle9Projeto - Contador de Palavras Únicas
Entrada e Armazenamento de TextoProcessamento de Palavras