¿ Que son las expresiones regulares ?
Citar
Una expresión regular, a menudo llamada también patrón, es una expresión que describe un conjunto de cadenas sin enumerar sus elementos. Por ejemplo, el grupo formado por las cadenas Handel, Händel y Haendel se describe mediante el patrón "H(a|ä|ae)ndel".
Citado de: Wikipedia
¿ Que necesitamos para usar expresiones regulares en Java ?
En Java a partir del JDK 1.4 se nos proporciona el paquete java.util.regexp el cual está formado por dos clases, que explicaré a continuación, la clase Matcher y la clase Pattern .
Las cuales incluiremos en nuestro programa de la siguiente manera:
Código:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
Algunos métodos interesantes de la clase "Matcher":
Código:
int end(int group)
Devuelve el índice del último carácter más 1 de la coincidente con la expresión regular.
Código:
boolean find()
Busca en la cadena de texto a analizar a partir del último matching, la secuencia de caracteres que puede concordar con la expresión regular
Código:
boolean find(int start)
Lo mismo que find() , pero empieza a buscar a partir de un índice que le es dado como parámetro.
Código:
String group()
Devuelve la cadena que ha sido aceptada por la expresión regular.
Código:
String group (int group)
Es el equivalente en perl a $n. Es decir, si tenemos una expresión regular tal que : “((a)(b)(c))”, group(2) sería a.
Algunos métodos interesantes de la clase "Pattern":
Código:
static Pattern compile (String expreg)
Crea un patrón a partir de la expresión regular dada por expreg.
Código:
static Pattern compile(String regex, int flags)
Ejemplo: si quiero que no me distinga entre mayúsculas y minúsculas, tendré que añadir el flag Pattern.CASE_INSENSITIVE.
Código:
int flags ()
Devuelve los flags asociados a la expresión regular o patrón.
Código:
Matcher matcher(CharSequence input)
Realizará el tratamiento del patrón sobre el texto que se le pase como entrada.
Código:
static boolean matches(String regex, CharSequence input)
La utilidad de este método es que permite la no utilización de un matcher para indicar si una expresión regular puede albergar una cadena o parte de esta.
Código:
String pattern()
Devuelve la expresión regular asociada al objeto Pattern sobre el que estemos trabajando.
Código:
String [] split (CharSequence input)
Tiene el mismo significado que en Perl;es decir, dado un patrón, te crea un array de String con las diferentes cadenas en las que se ha dividido.
El ejemplo
Código
import java.util.regex.Matcher; import java.util.regex.Pattern; public class regexpjava { Pattern pat=null; Matcher mat=null; pat=Pattern.compile("<title>(.*?)</title>"); mat=pat.matcher(texto); if(mat.find()){ } } }
La salida sería la siguiente:
Citar
Texto : <title>Hola soy el titulo</title>
Expresion regular : <title>(.*?)</title>
Match! : Hola soy el titulo
Expresion regular : <title>(.*?)</title>
Match! : Hola soy el titulo
Bueno creo que el ejemplo es mas que entendible, como para no explicarlo, cualquier cosa aquí estamos.
Referencias:
java.util.regex
java.util.regex.Pattern
java.util.regex.Matcher
BPSMind