comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

Expresiones regulares en Java

  • 2 Respuestas
  • 2811 Vistas

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

Desconectado S[e]C

  • *
  • Underc0der
  • Mensajes: 42
  • Actividad:
    0%
  • Reputación 0
  • I am mine.
    • Ver Perfil
    • Undersecurity
« en: Abril 03, 2010, 12:38:49 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: No tienes permisos para ver links. Registrate o Entra con tu 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
  1. import java.util.regex.Matcher;  
  2. import java.util.regex.Pattern;  



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

Código: Java
  1. 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
  1. 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
  1. 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
  1. No tienes permisos para ver links. Registrate o Entra con tu cuenta group()  


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

Código: Java
  1. No tienes permisos para ver links. Registrate o Entra con tu cuenta 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
  1. static Pattern compile (No tienes permisos para ver links. Registrate o Entra con tu cuenta expreg)  


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

Código: Java
  1. static Pattern compile(No tienes permisos para ver links. Registrate o Entra con tu cuenta regex, int flags)  
  2.  
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: Java
  1. int flags ()  


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

Código: Java
  1. Matcher matcher(CharSequence input)
 

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

Código: Java
  1. static boolean matches(No tienes permisos para ver links. Registrate o Entra con tu cuenta 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
  1. No tienes permisos para ver links. Registrate o Entra con tu cuenta pattern()  


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

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


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:
No tienes permisos para ver links. Registrate o Entra con tu cuenta
No tienes permisos para ver links. Registrate o Entra con tu cuenta
No tienes permisos para ver links. Registrate o Entra con tu cuenta
No tienes permisos para ver links. Registrate o Entra con tu cuenta
« Última modificación: Abril 18, 2013, 12:59:11 pm por Expermicid »
No tienes permisos para ver links. Registrate o Entra con tu cuenta
No tienes permisos para ver links. Registrate o Entra con tu cuenta



Desconectado PerverthsO

  • *
  • Underc0der
  • Mensajes: 56
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #1 en: Abril 03, 2010, 01:03:05 pm »
q buen manual siempre sera de gran utilidad :) gracias man
<h1>PerverthsO</h1>

Desconectado Straight Edge

  • *
  • Underc0der
  • Mensajes: 23
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #2 en: Diciembre 09, 2011, 03:59:40 am »
Hola


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

 

¿Te gustó el post? COMPARTILO!



[Video Curso] Iniciacion a Java por DesarrolloWeb y EscuelaIT Mayo 2014

Iniciado por graphixx

Respuestas: 3
Vistas: 1695
Último mensaje Febrero 23, 2015, 10:13:28 am
por Hu3c0
[LIBRO] Programación avanzada en Java - Sonia Jaramillo Valbuena

Iniciado por graphixx

Respuestas: 4
Vistas: 3478
Último mensaje Noviembre 09, 2018, 09:07:14 am
por ivaneliascalu
Como compilar programas Java en la consola de comandos de Windows

Iniciado por tar3kw0rm3d

Respuestas: 2
Vistas: 2339
Último mensaje Junio 04, 2013, 02:55:07 pm
por tar3kw0rm3d
Java Extremo [Video Cursos Completos] [Español] [ISO] 2009

Iniciado por graphixx

Respuestas: 9
Vistas: 4855
Último mensaje Diciembre 04, 2017, 02:36:34 am
por graphixx
[JAVA] Queso Admin Finder version Alpha

Iniciado por Flemon

Respuestas: 2
Vistas: 1528
Último mensaje Marzo 02, 2015, 08:25:18 pm
por Flemon