Foros del Web » Programación para mayores de 30 ;) » Java »

Expresion regular

Estas en el tema de Expresion regular en el foro de Java en Foros del Web. Hola, estoy intentando reemplazar parte de un texto de una cadena. Estoy usando expresiones regulares tal que así Código PHP: Pattern patron  =  Pattern . compile ...
  #1 (permalink)  
Antiguo 22/12/2011, 09:27
 
Fecha de Ingreso: mayo-2007
Mensajes: 44
Antigüedad: 17 años, 5 meses
Puntos: 0
Expresion regular

Hola,


estoy intentando reemplazar parte de un texto de una cadena.

Estoy usando expresiones regulares tal que así

Código PHP:
Pattern patron Pattern.compile("<[A-Z]*[a-z]*[0-9]*>");

String cadena "<div>Inicio</div>";


Matcher encaja patron.matcher(cadena);

String resultado encaja.replaceAll(" "); 
con este resultado
Código PHP:
 Inicio</div

Lo que quiero es que me reemplaze todo lo que empieze por < lo que sea y acabe en > y quedarme solo con la palabra Inicio.
  #2 (permalink)  
Antiguo 22/12/2011, 09:54
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: Expresion regular

El final es </div> y la / no está en el patrón, por lo que no encaja.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 22/12/2011, 10:01
 
Fecha de Ingreso: mayo-2007
Mensajes: 44
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: Expresion regular

Hola,

gracias ya me habia dado cuenta de eso.

El problema que tengo ahora es si la cadena es asi
Código PHP:
Pattern patron Pattern.compile("<[A-Z]*[a-z]*[0-9]*>(.*?)</[A-Z]*[a-z]*[0-9]*>");

String cadena "<div>Inicio</div><a href='/articulos'>Articulo</a>"
me devuelve solo Inicio y no Articulo
  #4 (permalink)  
Antiguo 22/12/2011, 11:30
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 17 años, 1 mes
Puntos: 188
Respuesta: Expresion regular

Efectivamente, el patron vuelve a no encajar.

Que sucede cuando hay un signo = o comillas, vez no las estas conciderando en el patron.
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.
  #5 (permalink)  
Antiguo 22/12/2011, 11:40
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: Expresion regular

Si se trata de quitar lo que hay entre < y >, ¿por qué no pruebas símplemente "<.*>" como patrón?

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #6 (permalink)  
Antiguo 23/12/2011, 03:55
 
Fecha de Ingreso: mayo-2007
Mensajes: 44
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: Expresion regular

Hola,

he probado con esto
Código PHP:

Pattern patron 
Pattern.compile("<.*>(.*)</.*>");

String cadena "<div>Inicio</div><a href=articulos>Articulo</a>";

Matcher encaja patron.matcher(cadena);

System.out.println(encaja.groupCount());

while (
encaja.find()) 
    
System.out.println(encaja.group(1)); 
Con esto me devuelve el count valor 1 y solo me imprime Articulo

Salu2
  #7 (permalink)  
Antiguo 23/12/2011, 04:42
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: Expresion regular

Hola:

Me da la impresión de que el primer <.*> coje toda la cadena hasta texto "Articulo", de hecho "<div>Inicio</div><a href=articulos>" encaja en ese trozito de patrón.

La solución está en los greedy, reluctant y possesive qualifiers, puedes verlos en http://docs.oracle.com/javase/tutori...gex/quant.html.

He probado

Pattern patron = Pattern.compile("<.*?>(.*?)</.*?>");

y funciona bien.

Se bueno.
__________________
Apuntes Java
Wiki de Programación

Última edición por chuidiang; 23/12/2011 a las 05:12
  #8 (permalink)  
Antiguo 25/12/2011, 06:13
 
Fecha de Ingreso: mayo-2007
Mensajes: 44
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: Expresion regular

Ok,

muchas gracias funciona.

SAlu2

Etiquetas: expresion, regular, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:04.