• Sábado 20 de Abril de 2024, 01:27

Autor Tema:  Expresiones Regulares  (Leído 2172 veces)

gnfrs

  • Miembro MUY activo
  • ***
  • Mensajes: 195
    • Ver Perfil
    • http://www.laguns.com.ar/
Expresiones Regulares
« en: Jueves 6 de Abril de 2006, 17:10 »
0
Hola,

Tengo una cadena como la siguiente:

INI hola FIN INI chau FIN

Yo quiero (mediante expresiones regulares) obtener lo que hay entre los INI - FIN.

Para ello utilizo la expresión siguiente:

INI(.*)FIN

El problema está en que esa expresión me devuelve hola FIN INI chau, por lo que la expresión debería ser algo como esto:

INI([^FIN]*)FIN

Pero aquí hay otro problema, si la cadena anteriormente dicha es de esta forma:

INI hola F hola FIN INI chau FIN

La expresión regular me devuelve sólo la palabra chau debido a que el circunflejo ( ^ ) está negando cualquier caracter de la clase [FIN], es decir [^FIN] me niega cualquier letra F, I o N.

Lo que yo quiero es que niegue la palabra completa (FIN), he visto en un manual que puedo usar el punto de esta manera para explicitar la palabra completa, pero no me da resultado alguno: [^.FIN].

También he probado con muchas combinaciones pero no funciona por ejemplo:

[^[.FIN]]
[^(FIN)]

Si me pueden dar una mano les agradecería mucho.

Un saludo,
Gabriel S. Luraschi

·· Videos de Guns and Roses LAGUNS - Banda tributo a Guns N' Roses ··

.

cluster

  • Miembro MUY activo
  • ***
  • Mensajes: 196
    • Ver Perfil
Re: Expresiones Regulares
« Respuesta #1 en: Jueves 6 de Abril de 2006, 18:22 »
0
no lo e probado pero se me ocurre (INI(.*)FIN)*

Thanatos-chan

  • Miembro MUY activo
  • ***
  • Mensajes: 136
  • Nacionalidad: do
    • Ver Perfil
Re: Expresiones Regulares
« Respuesta #2 en: Domingo 23 de Septiembre de 2007, 19:05 »
0
:rolleyes:  , no se si ayude, por lo viejo del mensaje pero

si usas esta

“((INI)[A-Z]*[0-9]*(FIN))”

deberia funcionar

esta expresion esta indicando que debe comenzar con INI Y debe terminar con FIN
pero acepta que se repitan letras de la A a la Z 1 o mas veces y numeros del 0 al 9 y o mas veces, lo unico seria agregar los caracteres especiales.

vi en el otro post que esta usando .* pero no se si esto es un wildcard y funciona para todas las letras, espero que te ayude en algo.
Que es un genio???? yo superare a un genio con trabajo duro, y eso es todo.

maelmori

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: Expresiones Regulares
« Respuesta #3 en: Domingo 23 de Septiembre de 2007, 22:30 »
0
INI(.*?)FIN

Míra este manual
www.regular-expressions.info/tutorial.html

-DriverOp-

  • Miembro activo
  • **
  • Mensajes: 81
    • Ver Perfil
Re: Expresiones Regulares
« Respuesta #4 en: Domingo 23 de Septiembre de 2007, 23:59 »
0
Cierto, esa es la expresión regular correcta, claro que para que tome dos resultados hay que usar preg_match_all y no preg_match

gnfrs

  • Miembro MUY activo
  • ***
  • Mensajes: 195
    • Ver Perfil
    • http://www.laguns.com.ar/
Re: Expresiones Regulares
« Respuesta #5 en: Lunes 24 de Septiembre de 2007, 14:01 »
0
Buenas, vi que respondieron a este mensaje aunque era un poco viejo me acuerdo !!!


El problema con esta expresión que mencionó Thanatos-chan
“((INI)[A-Z]*[0-9]*(FIN))” es que dentro de las cadenas INI - FIN puede encontrar nuevamente la misma cadena INI lo que ocasionaría un incorrecto parseo...


Al problema lo resolví hace bastante con la función preg_match_all, tal como lo indicó -DriverOp-


Saludos y gracias !
Gabriel S. Luraschi

·· Videos de Guns and Roses LAGUNS - Banda tributo a Guns N' Roses ··

.

Thanatos-chan

  • Miembro MUY activo
  • ***
  • Mensajes: 136
  • Nacionalidad: do
    • Ver Perfil
Re: Expresiones Regulares
« Respuesta #6 en: Jueves 27 de Septiembre de 2007, 04:25 »
0
:P , cierto no tome eso en cuenta, por cierto, las funciones preg_match_all y no_preg_match, son unicas de php?

o se pueden usar en otro lenguaje, porque me interesa usarlas en conjunto con las funcines de la libreria RegExp que tiene visual studio.
Que es un genio???? yo superare a un genio con trabajo duro, y eso es todo.

gnfrs

  • Miembro MUY activo
  • ***
  • Mensajes: 195
    • Ver Perfil
    • http://www.laguns.com.ar/
Re: Expresiones Regulares
« Respuesta #7 en: Jueves 27 de Septiembre de 2007, 14:22 »
0
Esas funciones están en PHP solamente, pero son compatibles con PERL (según el manual de PHP)... Por otro lado, la sintaxis de los patrones de expresiones regurales es un estándar, yo creo que en muchos lenguajes vas a encontrar cosas compatibles en cuanto a sintaxis, pero esas funciones ya no sé.... Probá y contanos, jeje


un saludo
Gabriel S. Luraschi

·· Videos de Guns and Roses LAGUNS - Banda tributo a Guns N' Roses ··

.