Expresiones regulares en java

Las expresiones regulares son patrones que nos permiten describir cadenas de caracteres. Nos pueden resultar muy útiles para validar una cadena, realizar una búsqueda, limpiar un texto o reemplazar determinadas cadenas. El objetivo de este post no es explicar como se usan sino ver dos sencillos ejemplos en java. Puedes encontrar más información sobre expresiones regulares en http://es.wikipedia.org/wiki/Expresion_regular.

Si eres programador web en java y te has visto en la necesidad de utilizar expresiones regulares en la web te interesarán los ejemplos que vienen a continuación en los que se explica cómo validar un email y la manera de eliminar las etiquetas de un texto html.

1. Validar un email

Las expresiones regulares en java nos permiten comprobar cadenas de caracteres en muy pocas líneas. Este es un ejemplo práctico en el que se valida un email. Se trata uno de los casos más típicos a la hora de validar un formulario web.

public static boolean validarEmail(String email) {
String regex = "^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,3})+$";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(email);
return matcher.matches();
}

Prueba:

String email = "miemailpersonal@midominioinventado.com";
boolean emailOK = RegexUtil.validarEmail(email);

Si emailOK es ‘true’ el email es correcto.

2. Convertir texto html en texto plano

En algunas ocasiones nos puede resultar útil pasar un texto que tenemos formateado en html a texto plano. Esto nos puede permitir recortarlo, cambiar su formato e incluso mostrarlo en una aplicación de escritorio.

En primer lugar se convierten los finales de párrafo en saltos de carro. Y posteriormente eliminamos el resto de etiquetas html utilizando expresiones regulares.

public static String htmlToPlainText(String html) {
html = html.replaceAll("

;", "\n"); //salto de línea
html = html.replaceAll("", "\n"); //salto de línea
Pattern pattern = Pattern.compile("<(.*?)>");
Matcher matcher = pattern.matcher(html);
String plainText = matcher.replaceAll("");
return plainText;
}

La expresión regular “<(.*?)>;” permite encontrar todas las cadenas que sean etiquetas html y mediante matcher.replaceAll(“”) eliminarlas. Abajo tenemos una prueba de que esto funciona correctamente.

Prueba:

	String html = "

Hola mundo,

Esto es un ejemplo " +
"sobre el uso de expresiones regulares en java.Un saludo.

";
String plainText = RegexUtil.htmlToPlainText(html);
System.out.println(plainText);

Imprime en pantalla:

Hola mundo,
Esto es un ejemplo sobre el uso de expresiones regulares en java.
Un saludo.

NOTA: Para crear expresiones regulares te puede interesar la siguiente aplicación web:
http://gskinner.com/RegExr/

Esta entrada fue publicada en programador-aplicaciones, programador-web y etiquetada , , , , , , , . Guarda el enlace permanente.

3 respuestas a Expresiones regulares en java

  1. Marcos Jara dijo:

    Hola Victor,

    Podrias ampliarnos la explicacion de la expresion regular que utilizaste?

    String regex = “^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,3})+$”;

    Gracias y saludos.

  2. Thanks for posting such a cool article.

  3. Leonardo Cardozo dijo:

    La expresión del mail está exagerada… ésta hace lo mismo:

    Pattern p = Pattern.compile(“.+@.+\\.[a-z]+”);

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

*

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>