1. Introducción
En la entrada anterior aprendimos la sintaxis básica de las expresiones regulares y vimos algunos ejemplos simples. Ahora profundizaremos en aspectos más avanzados, como:
- Cuantificadores
- Clases de caracteres
- Referencias a grupos
- Uso de la librería
java.util.regex
- Ejemplos avanzados de validación, análisis y extracción de información
2. Cuantificadores en Expresiones Regulares
Los cuantificadores permiten especificar cuántas veces debe aparecer un carácter o grupo en la cadena.
Cuantificador | Significado |
---|---|
? | 0 o 1 vez |
* | 0 o más veces |
+ | 1 o más veces |
{n} | Exactamente n veces |
{n,} | Al menos n veces |
{n,m} | Entre n y m veces |
Ejemplo: Validar una fecha en formato dd/mm/yyyy
:
String regex = "\\d{2}/\\d{2}/\\d{4}";
String fecha = "15/08/2023";
System.out.println(fecha.matches(regex)); // true
3. Clases de Caracteres
Las clases de caracteres permiten agrupar conjuntos de carácteres en una sola expresión.
Clase | Descripción |
---|---|
[abc] | Cualquiera de a , b o c |
[^abc] | Cualquier carácter excepto a , b o c |
[a-z] | Cualquier letra minúscula |
[A-Z] | Cualquier letra mayúscula |
[0-9] | Cualquier dígito |
[a-zA-Z0-9] | Cualquier letra o número |
Ejemplo: Validar un nombre de usuario (solo letras y números, mínimo 5 caracteres):
String regex = "[a-zA-Z0-9]{5,}";
String usuario = "user123";
System.out.println(usuario.matches(regex)); // true
4. Referencias a Grupos y Captura
Los paréntesis ()
permiten agrupar partes de la expresión y referirse a ellas posteriormente.
Ejemplo: Extraer el dominio de un correo electrónico:
import java.util.regex.*;
String regex = "([a-zA-Z0-9._%+-]+)@([a-zA-Z0-9.-]+)\\.([a-zA-Z]{2,})";
String correo = "ejemplo@correo.com";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(correo);
if (matcher.matches()) {
System.out.println("Usuario: " + matcher.group(1));
System.out.println("Dominio: " + matcher.group(2));
}
5. Clases de java.util.regex
Pattern
Clase que representa la expresión regular compilada.
Pattern pattern = Pattern.compile("\\d+");
Matcher
Clase que permite realizar operaciones de búsqueda sobre una cadena.
Matcher matcher = pattern.matcher("123abc");
Métodos principales
Método | Descripción |
---|---|
matches() | Verifica si toda la cadena cumple la expresión |
find() | Busca la siguiente coincidencia |
group() | Obtiene el texto coincidente |
Ejemplo: Buscar todas las palabras de una cadena
Pattern pattern = Pattern.compile("\\w+");
Matcher matcher = pattern.matcher("Hola mundo 123");
while (matcher.find()) {
System.out.println(matcher.group());
}
Salida:
Hola
mundo
123
6. Ejemplos Avanzados
Validación de Número de Teléfono (Formato +34 600 123 456
)
String regex = "\\+34\\s[6-7]\\d{2}\\s\\d{3}\\s\\d{3}";
String telefono = "+34 600 123 456";
System.out.println(telefono.matches(regex)); // true
Extracción de Enlaces en un Texto HTML
Pattern pattern = Pattern.compile("<a\\s+href=\\"(.*?)\\".*?>");
Matcher matcher = pattern.matcher("<a href=\"https://ejemplo.com\">Link</a>");
if (matcher.find()) {
System.out.println("URL encontrada: " + matcher.group(1));
}
Salida:
URL encontrada: https://ejemplo.com
7. Conclusión
En esta sesión hemos explorado conceptos intermedios de expresiones regulares en Java:
- Cuantificadores
- Clases de caracteres
- Referencias a grupos
- Uso de
Pattern
yMatcher
- Ejemplos avanzados de validación y extracción
En la próxima entrada veremos optimización de expresiones regulares y técnicas avanzadas.
Deja una respuesta