ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Expreciones Regulares (java)


Enviado por   •  15 de Junio de 2014  •  1.347 Palabras (6 Páginas)  •  345 Visitas

Página 1 de 6

EXPRESIONES REGULARES

INTRODUCCIÓN

Las expresiones regulares son algo que se usa desde hace años en otros lenguajes de programación como Perl, Sed o Awk. En la versión 1.4 del JDK de Sun se incluye el paquete java.util.regex, que proporciona una serie de clases para poder hacer uso de la potencia de este tipo de expresiones en Java. Antes de nada necesitamos saber qué es una expresión regular y para que nos puede servir:

Pues bien, una expresión regular es un patrón que describe a una cadena de caracteres. Todos hemos utilizado alguna vez la expresión *.doc para buscar todos los documentos en algún lugar de nuestro disco duro, pues bien, *.doc es un ejemplo de una expresión regular que representa a todos los archivos con extensión doc, el asterisco significa cualquier secuencia de caracteres.

Las expresiones regulares se rigen por una serie de normas y hay una construcción para cualquier patrón de caracteres. Una expresión regular sólo puede contener (aparte de letras y números) los siguientes caracteres:

< $, ^, ., *, +, ?, [, ], . >

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 tiene una determinada estructura, por ejemplo que el nombre de archivo que nos proponen tiene una determinada extensión, o comprobar que un email esta bien escrito. Para cada uno de estos casos existe una expresión regular que los representa:

Por medio de la expresión regular "camion" podemos encontrar cuantas veces se repite camión en un texto. Es la construcción mas sencilla.

Esta expresión "^www.*.es" comprueba que una cadena sea una dirección web que comience por www y sea de un servidor español.

Y esta, para ver la potencia de las expresiones regulares, comprueba la buena formación de los correos electrónicos: "[^A-Za-z0-9.@_-~#]+".

USO

El paquete java.util.regex esta formado por dos clases, la clase Matcher y la clase Pattern y por una excepción, PatternSyntaxException.

La clase Pattern es la representación compilada de una expresión regular, o lo que es lo mismo, representa a la expresión regular, que en el paquete java.util.regex necesita estar compilada. En castellano significa patrón.

La clase Matcher es un tipo de objeto que se crea a partir de un patrón mediante la invocación del método Pattern.matcher. Este objeto es el que nos permite realizar operaciones sobre la secuencia de caracteres que queremos validar o la secuencia de caracteres en la que queremos buscar.

Por lo tanto tenemos patrones que deben ser compilados, a partir de estos creamos objetos Matcher para poder realizar las operaciones sobre la cadena en cuestión.

Vamos con la clase Pattern, para crear un patrón necesitamos compilar una expresión regular, esto lo conseguimos con el método compile:

Pattern patron = Pattern.compile("camion");

El método pattern devuelve la expresión regular que hemos compilado, el método matcher crea un objeto Matcher a partir del patrón, el método split divide una cadena dada en partes que cumplan el patrón compilado y por último el método matches compila una expresión regular y comprueba una cadena de caracteres contra ella.

Ahora la clase Matcher . Esta clase se utiliza para comprobar cadenas contra el patrón indicado. Un objeto Matcher se genera a partir de un objeto Pattern por medio del método matcher:

Pattern patron = Pattern.compile("camion"); Matcher encaja = patron.matcher();

Una vez que tenemos el objeto creado, podemos realizar tres tipos de operaciones sobre una cadena de caracteres. Una es a través del método matches que intenta encajar toda la secuencia en el patrón (para el patrón "camion" la cadena "camion" encajaría, la cadena "mi camion es verde" no encajaría). Otra es a través del método lookingAt, intenta encajar el patrón en la cadena (para el patrón "camion" tanto la cadena "camion" como la cadena "mi camion es verde" encajaria). Otra es la proporcionada por el método find que va buscando subcadenas dentro de la cadena de caracteres que cumplan el patrón compilado (una vez encontrada una ocurrencia, se puede inspeccionar por medio de los métodos start que marca el primer carácter de la ocurrencia en la secuencia y el método end que marca el ultimo carácter de la ocurrencia).

Todos estos métodos devuelven un booleano que indica si la operación ha tenido éxito.

Todo lo anterior esta orientado a la búsqueda de patrones en cadenas de caracteres, pero puede que queramos llegar mas allá, que lo que queramos sea reemplazar una cadena de caracteres que se corresponda con un patrón por otra cadena. Por ejemplo un método que consigue esto es replaceAll que reemplaza toda ocurrencia del patrón en la cadena por la cadena que se le suministra.

...

Descargar como (para miembros actualizados)  txt (8.5 Kb)  
Leer 5 páginas más »
Disponible sólo en Clubensayos.com