Título: Expresiones regulares en Java Publicado por: SeC 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 (http://es.wikipedia.org/wiki/Expresión_regular) ¿ 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; 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
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 (http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/package-summary.html) java.util.regex.Pattern (http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html) java.util.regex.Matcher (http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Matcher.html) BPSMind (http://bpsmind.wordpress.com/2007/07/20/expresiones-regulares-en-java-i-pattern-y-matcher/) Título: Re: Expresiones regulares en Java Publicado por: leogtz 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
No me ha gustado para nada, me quedo con Perl. Título: Re: Expresiones regulares en Java Publicado por: Debci en 3 Abril 2010, 22:08 pm Esto me puede valer para mi lenguaje de programación.
Saludos y gracias por el aporte. Título: Re: Expresiones regulares en Java Publicado por: Hearts en 3 Abril 2010, 22:47 pm Para trabajar en profundidad con las expresiones, deberían buscar sobre JFlex y CUP.
salu2 Título: Re: Expresiones regulares en Java Publicado por: Debci en 4 Abril 2010, 11:32 am Para trabajar en profundidad con las expresiones, deberían buscar sobre JFlex y CUP. Voy a mirarlo haber que tal.salu2 Gracias. Saludos Título: Re: Expresiones regulares en Java Publicado por: Debci 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
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 |