Coincidencia de Patrones con Regex
Parte de la sección Lógica y Flujo del Journey de Java de Coddy — lección 47 de 59.
Las clases Pattern y Matcher proporcionan herramientas potentes para operaciones de regex en Java. Primero, veamos cómo usarlas:
Crear un pattern usando Pattern.compile():
Pattern pattern = Pattern.compile("cat");
// Crea un patrón para encontrar "cat"Crea un matcher para tu texto:
String text = "The cat and dog";
Matcher matcher = pattern.matcher(text);
// Creates a matcher for the textAhora puedes encontrar coincidencias usando matcher.find():
while (matcher.find()) {
System.out.println("Found at: " + matcher.start());
}Después de ejecutar el código anterior, la salida es: Found at: 4
Entendiendo los métodos:
<b>matcher.find()</b>- Busca la siguiente ocurrencia del patrón en el texto- Devuelve
truesi se encuentra una coincidencia - Devuelve
falsesi no hay más coincidencias - Por esto lo usamos en un bucle
while- para encontrar todas las ocurrencias
- Devuelve
<b>matcher.start()</b>- Devuelve el índice inicial (posición) de la última coincidencia encontrada porfind()- En nuestro ejemplo, "cat" comienza en el índice 4 en "The cat and dog"
- Debe ser llamado después de un
find()exitoso
Ejemplo con múltiples coincidencias:
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: 8Desafío
FácilCrea un método llamado findWords que tome dos argumentos:
- Un String (
text) en el que buscar - Un String (
word) a encontrar
El método debe:
- Usar Pattern y Matcher para encontrar todas las ocurrencias de la palabra
- Devolver una cadena que contenga las posiciones donde se encontró la palabra
- Las posiciones deben estar separadas por espacios
Los mensajes de retorno deben ser:
- Si algún input es null: return "Invalid input"
- Si la palabra no se encuentra: return "Not found"
- Si se encuentra: devolver posiciones (p. ej., "4 10 15")
Hoja de referencia
Las clases Pattern y Matcher proporcionan herramientas potentes para operaciones regex en Java.
Cree un pattern usando Pattern.compile():
Pattern pattern = Pattern.compile("cat");
// Crea un patrón para encontrar "cat"Cree un matcher para su texto:
String text = "The cat and dog";
Matcher matcher = pattern.matcher(text);
// Crea un matcher para el textoEncuentre coincidencias usando matcher.find():
while (matcher.find()) {
System.out.println("Found at: " + matcher.start());
}Métodos clave:
<b>matcher.find()</b>- Busca la siguiente ocurrencia del patrón- Devuelve
truesi se encuentra,falsesi no hay más coincidencias - Úselo en un bucle para encontrar todas las ocurrencias
- Devuelve
<b>matcher.start()</b>- Devuelve el índice inicial de la última coincidencia encontrada- Llame después de un
find()exitoso
- Llame después de un
Pruébalo tú mismo
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) {
// Escribe tu código aquí
}
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 lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y Flujo
1Arreglos Multidimensionales
Básicos de Arreglos 2DAccediendo a Elementos de Arreglos 2DBucles Anidados con Arreglos 2DResumen - Arreglos 2DSuma y Resta de MatricesArreglos IrregularesArreglos 3D y Más AlláPatrones Comunes de Arreglos 2DResumen - Todo Sobre Arreglos4HashSet Parte 1
¿Qué es un HashSet?Agregando un elementoEliminando un elementoComprobando si existe un elementoVacío y tamañoLimpiar y clonarResumen - HashSet7Manejo Básico de Errores
Básicos de Try-CatchBloque FinallyLanzamiento de ExcepcionesExcepciones Personalizadas2HashMap Parte 1
¿Qué es un HashMap?Declarar un HashMapAcceder a ValoresVerificar si una Clave ExisteModificar DiccionariosResumen - HashMap5HashSet Parte 2
Matemáticas - Unión de HashSetsMatemáticas - Intersección de HashSetMatemáticas - Diferencia de ConjuntosMatemáticas - Diferencia SimétricaSubconjuntos y SuperconjuntosIterando Sobre Conjuntos8Operaciones Avanzadas con Cadenas
Conceptos Básicos de StringBuilderIntroducción a StringBufferConceptos Básicos de Expresiones RegularesCoincidencia de Patrones con RegexTokenizador de CadenasFormato Avanzado de Cadenas3HashMap Parte 2
Métodos de HashMapIterar con keySet()Iterar con entrySet()HashMap AnidadoResumen - Gestionar AlmacénResumen - Operaciones de HashMap6Flujo de Control Avanzado
Sentencias EtiquetadasExpresión SwitchCoincidencia de PatronesCláusulas de GuardiaResumen - Flujo de Control9Proyecto - Contador de Palabras Únicas
Entrada y Almacenamiento de TextoProcesamiento de Palabras