Contribuyentes

miércoles, 22 de junio de 2011

Expresiones regulares en Java

Hola a todos, ya tenía mucho tiempo que no escribía nada en el blog, la mayor parte del tiempo fueron por mis responsabilidades con la escuela, pero hoy vamos a tratar un tema que nos puede servir mucho para realizar validaciones de cadenas, reconocer patrones en las mismas, etc., las posibilidades son varias, así que vamos a empezar con las expresiones regulares.
Una expresión regular, es una expresión que permite describir un conjunto de cadenas sin enumerar sus elementos; estas expresiones nos permiten enumerar conjuntos de cadenas de manera formal y así decidir si una cadena esta dentro del conjunto descrito en la expresión regular.
Por ejemplo, en teoría de la computación (autómatas y lenguajes formales), una expresión regular serían las siguientes: a, aaa, a+, a*; los primeros dos elementos enumerados anteriormente representan conjuntos de una sola 'a' y tres 'a's respectivamente, mientras que la a con el signo "más" representa una o más veces la repetición de la a y con el signo '*' representa cero o más veces.
Otros ejemplos:

  • (ab)*: repeticiones de ab's cero o más veces
  • (azul|morado) busca las cadenas que digan azul o morado
  • ((ab)*(ab)+) todas las cadenas de ab que tengan al menos un par
En java se provee de un motor de búsqueda para cazar con dichas expresiones utilizando dos clases: Pattern  y Matcher. La clase Pattern, es la representación compilada de la expresión regular y la clase Matcher permite crear objetos a partir de Pattern.matcher con la cual se pueden realizar operaciones sobre la cadena de caracteres que queremos validar o en la secuencia de caracteres que queremos buscar.
Ya que di una pequeña explicación sobre las clases que permiten realizar el uso de expresiones regulares, vamos a realizar un pequeño ejemplo:


public class Ejemplo{

public static void main(String args[]){
        if(Pattern.matches("[A-Za-zñÑ]+", "Soy una Piña"))
            System.out.println("True");
        else
            System.out.println("false");
}

}
Una vez que se ha ejecutado este código el resultado va a imprimir en pantalla "True", dado que evalúa la cadena y determina que dentro de dicha cadena, cada uno de sus caracteres, entra en el intervalo dado en la expresión regular.
Una pequeña curiosidad en la expresión regular es el uso después de los corchetes del símbolo "+", este símbolo denota que la cantidad de elementos que caen dentro de la expresión regular debe ser de al menos uno, en cambio, si quisiéramos que el número de caracteres fuera exactamente cero, sustituimos el símbolo "+" por el símbolo "*", que sirve para denotar cero o más veces.
Con esto doy el pequeño ejemplo de las expresiones regulares en Java y en próximos posts escribiré sobre la forma de las expresiones regulares que nos permitirán tener mejores filtros para nuestras cadenas a evaluar.

Saludos.


No hay comentarios:

Publicar un comentario