Expresiones regulares en Java con ejemplos: en la práctica

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Expresiones regulares en Java: guía completa con ejemplos de código



Las expresiones regulares (regex) son una herramienta poderosa para buscar, extraer y reemplazar texto según un patrón. En Java, el trabajo con expresiones regulares se implementa a través de dos clases principales: java.util.regex.Pattern (compilación del patrón) y java.util.regex.Matcher (ejecución de la búsqueda). En este artículo analizaremos la sintaxis, los métodos principales y veremos ejemplos prácticos que le ayudarán a usar regex con confianza en proyectos reales.



1. Fundamentos del trabajo con expresiones regulares en Java

Antes de pasar a los ejemplos, analicemos las clases clave y su interacción.



Clase Pattern

Pattern es una representación compilada de la expresión regular. Se crea mediante el método estático Pattern.compile(). Sin compilación no es posible usar regex.



Clase Matcher

Matcher es el "motor" que realiza la búsqueda según el patrón dado en una cadena. Se crea mediante el método pattern.matcher(inputString).



Sintaxis básica de metacaracteres

  • . — cualquier carácter (excepto salto de línea)
  • \\d — dígito (0-9)
  • \\w — letra, dígito o guion bajo
  • \\s — carácter de espacio en blanco
  • ^ — inicio de la cadena
  • $ — fin de la cadena
  • * — 0 o más repeticiones
  • + — 1 o más repeticiones
  • ? — 0 o 1 repetición
  • {n,m} — de n a m repeticiones
  • [] — conjunto de caracteres (por ejemplo, [a-z] — cualquier letra minúscula)
  • () — grupo de captura


Ejemplo 1: Validación simple de número de teléfono

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 correcto"); } else { System.out.println("El número no coincide con el formato"); } }}


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

Comprender la diferencia entre matches() y find() es clave para trabajar exitosamente con regex en Java.



  • matches() — verifica si toda la cadena coincide completamente con el patrón (agrega implícitamente ^ y $).
  • find() — busca una subcadena que coincida con el patrón en cualquier lugar de la cadena.
  • group() — devuelve la coincidencia encontrada o el valor del grupo de captura.


Ejemplo 2: Extracción de direcciones de email de un texto usando find() y grupos

import java.util.regex.*;

public class EmailExtractor { public static void main(String[] args) { String text = "Contactos: support@example.com, info@test.org y 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("Nombre de usuario: " + matcher.group(1)); System.out.println("Dominio: " + matcher.group(2)); System.out.println("Zona: " + matcher.group(3)); System.out.println("---"); } }}


Ejemplo 3: Validación de contraseña con matches()

Requisitos: de 8 a 20 caracteres, al menos una letra mayúscula, al

Blogs

Book Recommendations