elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Expresiones regulares en Java
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Expresiones regulares en Java  (Leído 7,693 veces)
SeC

Desconectado Desconectado

Mensajes: 109


@susan.


Ver Perfil WWW
Expresiones regulares en Java
« en: 3 Abril 2010, 20:14 pm »

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 ?

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)  
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 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
  1. import java.util.regex.Matcher;  
  2. import java.util.regex.Pattern;  
  3.  
  4. public class regexpjava {  
  5.  
  6.       public static void main(String[] args) {  
  7.  
  8.           Pattern pat=null;  
  9.           Matcher mat=null;  
  10.           String texto="<title>Hola soy el titulo</title>";  
  11.           pat=Pattern.compile("<title>(.*?)</title>");  
  12.           mat=pat.matcher(texto);  
  13.           System.out.println("Texto \t\t\t: "+texto);  
  14.           if(mat.find()){  
  15.  
  16.               System.out.println("Expresion regular \t: <title>(.*?)</title>");  
  17.               System.out.println("Match! \t\t\t: "+mat.group(1));  
  18.           }  
  19.       }  
  20. }
  21.  


La salida sería la siguiente:

Citar
Texto                    : <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:
java.util.regex
java.util.regex.Pattern
java.util.regex.Matcher
BPSMind


En línea

Educad a los niños y no sera necesario castigar a los hombres - Pitagoras.
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Expresiones regulares en Java
« Respuesta #1 en: 3 Abril 2010, 21:00 pm »

Me ha servido, aunque no se parece mucho a Perl, para sacar el disco, la ruta y el nombre de un archivo he tenido que hacer esto:

 
Código:
      pat = Pattern.compile("([a-zA-Z]:)/(.*)/(.*)");
 

Y en Perl hice:

Código
  1. #!/usr/bin/perl
  2. use warnings;
  3. use strict;
  4. my $file = 'c:\windows\system32\nc.exe';
  5. print "Archivo : $file\n";
  6. my ($disco, $ruta, $nombre, $extension) = ($file =~ m/^(\w+\:\\)(.*)\\(.*)\.(.*)$/);
  7. print "Disco : $disco\n";
  8. print "Ruta : $ruta\n";
  9. print "Nombre : $nombre\n";
  10. print "Extensión : $extension\n";

No me ha gustado para nada, me quedo con Perl.


En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Re: Expresiones regulares en Java
« Respuesta #2 en: 3 Abril 2010, 22:08 pm »

Esto me puede valer para mi lenguaje de programación.

Saludos y gracias por el aporte.

En línea

Hearts

Desconectado Desconectado

Mensajes: 182



Ver Perfil
Re: Expresiones regulares en Java
« Respuesta #3 en: 3 Abril 2010, 22:47 pm »

Para trabajar en profundidad con las expresiones, deberían buscar sobre JFlex y CUP.

salu2
En línea

Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Re: Expresiones regulares en Java
« Respuesta #4 en: 4 Abril 2010, 11:32 am »

Para trabajar en profundidad con las expresiones, deberían buscar sobre JFlex y CUP.

salu2
Voy a mirarlo haber que tal.
Gracias.

Saludos
En línea

Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Re: Expresiones regulares en Java
« Respuesta #5 en: 4 Abril 2010, 16:03 pm »

Disculpen el doble post, peor tengo un problema, que no se a que deriva .s
Tengo este codigo con estas expresiones:

Código
  1. String texto="if[4 < 1];";  
  2. pat=Pattern.compile("if[(.*?)];");

Y no devuelve nada, como es que no encuentra la expresión?
He utilizado mi analizador de expresiones para resolverlo pero si no uso el <></> en la expresión no lo coje, espero que sepan a que se deve.

Saludos
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Hilo oficial: Solicitudes de Expresiones Regulares « 1 2 3 »
Programación General
WHK 29 28,498 Último mensaje 12 Enero 2023, 14:19 pm
por ~
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines