2. Expresiones regulares
ITI. Erick Aguila Martínez
Y, ¿Qué es una expresión regular?
Las expresiones regulares son patrones utilizados para encontrar una determinada combinación de
caracteres dentro de una cadena de texto.
3. ¿Para qué sirven?
ITI. Erick Aguila Martínez
Una expresión regular, nos servirá para buscar patrones en una cadena de texto, por ejemplo
encontrar cuantas veces se repite una palabra en un texto, para comprobar que una cadena de texto
tiene una determinada estructura, para saber el nombre de algún archivo y conocer su determinada
extensión, o validar que un email esta bien escrito...
4. Sintaxis
ITI. Erick Aguila Martínez
Una breve lista de los más utilizados:
• ^ Indica el principio de una cadena
• $ Indica el final de una cadena
• () Un agrupamiento de parte de una expresión
• [] Un conjunto de caracteres de la expresión
• {} Indica un número o intervalo de longitud de la expresión
• . Cualquier carácter salvo el salto de línea
• ? 0-1 ocurrencias de la expresión
• + 1-n ocurrencias de la expresión
• * 0-n ocurrencias de la expresión
• Para escribir un carácter especial como los anteriores y que sea tratado como un literal
• | Para indicar una disyunción lógica (para elegir entre dos valores: a|b se tiene que cumplir al
menos uno de los dos)
5. Ejemplos
ITI. Erick Aguila Martínez
La mejor manera de comprender algo es ponerlo en practica y para esto daremos algunos ejemplos
de los cuales entenderemos el uso de la sintaxis anteriormente mencionada.
//Los que están entre la h y la m
String patron = "[a-m&&h-z]";
Pattern p = Pattern.compile(patron);
String texto = "h";
//Busca patrón en el texto
Matcher matcher = p.matcher(texto);
if(matcher.matches()){
System.out.println("Coincide");
}else{
System.out.println("No coincide");
}
En este caso el patrón coincide ya que es un carácter que está
entre la h y la m, pero si en cambiamos el texto por hh, no coincidirá
porque el patrón indique solo busque una letra, no varias.
6. Ejemplos
ITI. Erick Aguila Martínez
String patron = "[s]$";
//El ^ es que solo encuentre el primero de la cadena, $es solo el ultimo
Pattern p = Pattern.compile(patron);
String texto = "Estamos aprendiendo a usar expresiones regulares";
Matcher matcher = p.matcher(texto);
while(matcher.find()){
System.out.printf("Encontrado %s en %d y final en %dn",
matcher.group(),//patrón
matcher.start(),//donde empieza la palabra encontrada
matcher.end()); //donde acaba la palabra encontrada
}
En este caso buscamos todas las palabras que
acaben en s, y el resultado es el siguiente:
Encontrado s en 47 y final en 48
Te está indicando que la posición en la que
empieza el patrón s es en el carácter 47, y acaba
en el carácter 48. Te indica que se ha encontrado,
y además en que posición.
7. Ejemplos
ITI. Erick Aguila Martínez
String patron = "a[mp]";//todo lo que tenga una a seguida de un carácter entre m y p
Pattern p = Pattern.compile(patron);
String texto = "Estamos aprendiendo a usar expresiones regulares";
Matcher matcher = p.matcher(texto);
//String result = matcher.replaceAll("x");//Esto reemplaza todo
//System.out.println(result);
//
String result = matcher.replaceFirst("x");//Esto reemplaza solo la primera coincidencia
System.out.println(result);
Para reemplazar, utilizamos el método
ReplaceFirst(), que reemplaza solo la primera
coincidencia, o ReplaceAll(), que reemplaza todo
lo encontrado:
El resultado sería el siguiente:
Estxos aprendiendo a usar expresiones regulares
8. Ejemplos
ITI. Erick Aguila Martínez
final String patron = "[0-9]+";//Un numero o mas
final String texto = "uno232dos5tres423cuatro";
Pattern p1 = Pattern.compile(patron);
String[] items = p1.split(texto);//Dividimos el texto por las partes encontradas
for (String s : items) {
System.out.println(s);
}
El resultado sería:
uno
dos
tres
cuatro
Un ejemplo de utilización sería por ejemplo limpiar una cadena, quitando todos los números que se
encuentre en una cadena:
9. Fuente
ITI. Erick Aguila Martínez
Para más información consultar
http://www.tutorial-es.com/java-expresiones-regulares/
https://developer.mozilla.org/es/docs/Web/JavaScript/Guide/Regular_Expressions
https://www.adictosaltrabajo.com/tutoriales/regexsam/
http://programacion.net/articulo/expresiones_regulares_en_java_127