Expresiones regulares en Java

Iniciado por S[e]C, Abril 03, 2010, 12:38:49 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Abril 03, 2010, 12:38:49 PM Ultima modificación: Abril 18, 2013, 12:59:11 PM por Expermicid
Bueno esta publicación consiste en un básico ejemplo del uso de expresiones regulares en java. Ademas ya que estoy comenzando en este lenguaje recuerdo ese dicho de: "Enseñando/compartiendo se aprende", así es que vamos allá:

¿ Que son las expresiones regulares ?

CitarUna 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: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

¿ 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: java
import java.util.regex.Matcher;  
import java.util.regex.Pattern; 



Algunos métodos interesantes de la clase "Matcher":

Código: java
int end(int group)  


Devuelve el índice del último carácter más 1 de la coincidente con la expresión regular.

Código: java
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: java
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: java
String group()  


Devuelve la cadena que ha sido aceptada por la expresión regular.

Código: java
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: java
static Pattern compile (String expreg)  


Crea un patrón a partir de la expresión regular dada por expreg.

Código: java
static Pattern compile(String regex, int flags)  

Crea un patrón a partir de la expresión expreg teniendo en cuenta los flags. Los flags son opciones que se incluyen para tener un trato especial cuando se este trabajando con la expresión regular.
Ejemplo: si quiero que no me distinga entre mayúsculas y minúsculas, tendré que añadir el flag No tienes permitido ver los links. Registrarse o Entrar a mi cuenta_INSENSITIVE.

Código: java
int flags ()  


Devuelve los flags asociados a la expresión regular o patrón.

Código: java
Matcher matcher(CharSequence input)
 

Realizará el tratamiento del patrón sobre el texto que se le pase como entrada.

Código: java
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: java
String pattern()  


Devuelve la expresión regular asociada al objeto Pattern sobre el que estemos trabajando.

Código: java
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: java
import java.util.regex.Matcher;  
import java.util.regex.Pattern; 
 
public class regexpjava { 
 
       public static void main(String[] args) { 
 
           Pattern pat=null; 
           Matcher mat=null; 
           String texto="<title>Hola soy el titulo</title>"; 
           pat=Pattern.compile("<title>(.*?)</title>"); 
           mat=pat.matcher(texto); 
           System.out.println("Texto \t\t\t: "+texto); 
           if(mat.find()){ 
 
               System.out.println("Expresion regular \t: <title>(.*?)</title>"); 
               System.out.println("Match! \t\t\t: "+mat.group(1)); 
           } 
       } 


La salida sería la siguiente:

CitarTexto    : <title>Hola soy el titulo</title> 
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:
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta



q buen manual siempre sera de gran utilidad :) gracias man
<h1>PerverthsO</h1>

Hola


para toda cadena existe una exprecion regular?....el lema de kleene nos lo asegura?