Expresiones regulares en Java con ejemplos: Guía completa

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: desde lo básico hasta el uso avanzado



Las expresiones regulares (regex) son una herramienta poderosa para trabajar con texto, que permite realizar búsqueda, reemplazo y validación de cadenas según patrones complejos. En Java, el soporte para expresiones regulares se implementa a través del paquete java.util.regex, que proporciona dos clases principales: Pattern (compila el patrón) y Matcher (realiza operaciones de búsqueda/reemplazo).



En este artículo, analizaremos cómo usar eficazmente las expresiones regulares en Java, comenzando con la sintaxis básica y terminando con ejemplos reales de la práctica de desarrollo.



1. Fundamentos de la sintaxis de expresiones regulares en Java



Antes de pasar al código Java, es importante dominar los metacaracteres básicos de las expresiones regulares:



  • . — cualquier carácter individual (excepto salto de línea)
  • \\d — cualquier dígito (0-9)
  • \\w — letra, dígito o guion bajo
  • \\s — carácter de espacio en blanco (espacio, tabulación, nueva línea)
  • * — 0 o más repeticiones del carácter anterior
  • + — 1 o más repeticiones
  • ? — 0 o 1 repetición (hace que el carácter sea opcional)
  • ^ — inicio de la cadena
  • $ — final de la cadena
  • [...] — clase de caracteres (por ejemplo, [a-z] — todas las letras minúsculas)
  • (...) — grupo de captura


Importante: En Java, las cadenas con expresiones regulares requieren doble escape. Por ejemplo, para usar \\d, en el código escribimos "\\\\d". Esto se debe a que la barra invertida primero es procesada por el compilador de Java y luego se pasa al motor de regex.



2. Clases Pattern y Matcher — base del trabajo con regex en Java



El esquema básico para trabajar con expresiones regulares en Java consta de tres pasos:



  1. Creación del objeto Pattern mediante la compilación de la cadena del patrón
  2. Creación del objeto Matcher llamando al método matcher() sobre la cadena que se desea verificar
  3. Ejecución de operaciones — búsqueda, coincidencia, reemplazo


Ejemplo 1: Verificación de coincidencia de toda la cadena



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

public class RegexExample { public static void main(String[] args) { // Verificar si la cadena es una dirección de email válida String email = "user@example.com"; String emailPattern = "^[A-Za-z0-9+_.-]+@(.+)$"; Pattern pattern = Pattern.compile(emailPattern); Matcher matcher = pattern.matcher(email); if (matcher.matches()) { System.out.println("Email es válido"); } else { System.out.println("Email no es válido"); } }}


El método matches() intenta hacer coincidir el patrón con toda la cadena completa. Si se necesita verificar si la cadena contiene una coincidencia con el patrón (no necesariamente completa), se utiliza el método find().



Ejemplo 2: Búsqueda de todas las ocurrencias del patrón en la cadena



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

public class FindExample { public static void main(String[] args) { String text = "Java 8, Java 11, Java 17 — son versiones del lenguaje Java"; String regex = "Java\\\\s+\\\\d+"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(text); while (matcher.find()) { System.out.println("Encontrado: " + matcher.group() + " (posición: " + matcher.start() + "-" + matcher.end() + ")"); } }}


Resultado de la ejecución:

Encontrado: Java 8 (posición: 0-6)Encontrado: Java 11 (posición: 8-15)

Blogs

Book Recommendations