Thread View: chile.comp.programacion
8 messages
8 total messages
Started by Pintamono
Fri, 19 Oct 2007 16:55
Expresion Regular II
Author: Pintamono
Date: Fri, 19 Oct 2007 16:55
Date: Fri, 19 Oct 2007 16:55
50 lines
1877 bytes
1877 bytes
Tengo la siguiente expresion regular: ([SNsn])([a-zA-Z0-9 ]+)\s([a-zA-Z0-9 ]+)\r\n([\s\S]*) Esta expresion me acepta texto del tipo |S150 RTF3434 1 23 4 5 6 7 8 9 0 Y |S150 RTF3434 1 23 4 5 6 7 8 9 0 Pero no me deja obviar el segundo campo de la primera linea, es decir... |S150 1 23 4 5 6 7 8 9 0 Esto no pasa. Considerando que el * es el comodin Probe con ([SNsn])([a-zA-Z0-9 ]+)\s*([a-zA-Z0-9 ]+)\r\n([\s\S]*) ([SNsn])([a-zA-Z0-9 ]+)\s(*[a-zA-Z0-9 ]+)\r\n([\s\S]*) ([SNsn])([a-zA-Z0-9 ]+)\s([a-zA-Z0-9 ]*+)\r\n([\s\S]*) Sin obtener resultados positivos... Como puedo dejar la expresion para que el segundo campo aparezca 0 o 1 vez solamente? Gracias!!! Nota: Lo que necesito es ingresar texto del tipo |S150 RTF1 1 avisos 23 4 5 6 7 8 9 0 |S151 RtF2 2 avisos 23 4 5 6 7 8 9 0 |S505 rtf3 3 avisos 23 4 5 6 7 8 9 0 |S460 4 avisos 23 4 5 6 7 8 9 0 |S200 ftr4 5 avisos 23 4 5 6 7 8 9 0 |S800 ppp5 6 avisos 23 4 5 6 7 8 9 0
Re: Expresion Regular II
Author: +mArkO+
Date: Fri, 19 Oct 2007 16:09
Date: Fri, 19 Oct 2007 16:09
61 lines
2299 bytes
2299 bytes
no soy muy entendido en el tema, pero podria ser: ([SNsn])([a-zA-Z0-9 ]+)\s([a-zA-Z0-9 ]*)(\r\n)*([\s\S]*) + =>1 � mas veces * =>o � mas veces "Pintamono" <pintamono@NoMandeWeas.kk> escribi� en el mensaje news:73a2d0f1f74ebfdede4c3cc14a267ce5$1@usenet.no-ip.com... > Tengo la siguiente expresion regular: > > ([SNsn])([a-zA-Z0-9 ]+)\s([a-zA-Z0-9 ]+)\r\n([\s\S]*) > > Esta expresion me acepta texto del tipo > > |S150 RTF3434 > 1 23 4 5 6 7 8 9 0 > > Y > |S150 RTF3434 > 1 23 4 5 6 7 8 9 0 > > Pero no me deja obviar el segundo campo de la primera linea, es decir... > > |S150 > 1 23 4 5 6 7 8 9 0 > > Esto no pasa. > > Considerando que el * es el comodin > > Probe con > > ([SNsn])([a-zA-Z0-9 ]+)\s*([a-zA-Z0-9 ]+)\r\n([\s\S]*) > ([SNsn])([a-zA-Z0-9 ]+)\s(*[a-zA-Z0-9 ]+)\r\n([\s\S]*) > ([SNsn])([a-zA-Z0-9 ]+)\s([a-zA-Z0-9 ]*+)\r\n([\s\S]*) > > Sin obtener resultados positivos... > > > Como puedo dejar la expresion para que el segundo campo aparezca 0 o 1 vez > solamente? > > Gracias!!! > > Nota: Lo que necesito es ingresar texto del tipo > > |S150 RTF1 > 1 avisos 23 4 5 6 7 8 9 0 > |S151 RtF2 > 2 avisos 23 4 5 6 7 8 9 0 > |S505 rtf3 > 3 avisos 23 4 5 6 7 8 9 0 > |S460 > 4 avisos 23 4 5 6 7 8 9 0 > |S200 ftr4 > 5 avisos 23 4 5 6 7 8 9 0 > |S800 ppp5 > 6 avisos 23 4 5 6 7 8 9 0 >
Re: Expresion Regular II
Author: +mArkO+
Date: Fri, 19 Oct 2007 19:30
Date: Fri, 19 Oct 2007 19:30
77 lines
2812 bytes
2812 bytes
no entendi muy bien tu ejemplo, podrias aclararlo mas cuales son las cadenas que deseas validar "Pintamono" <pintamono@NoMandeWeas.kk> escribi� en el mensaje news:dc126c20d349aa26aaf5b790c09a069f$1@usenet.no-ip.com... > Gracias pero no me sirvio... > > > > +mArkO+ wrote: > > >> no soy muy entendido en el tema, pero podria ser: > >> ([SNsn])([a-zA-Z0-9 ]+)\s([a-zA-Z0-9 ]*)(\r\n)*([\s\S]*) > >> + =>1 � mas veces >> * =>o � mas veces > > >> "Pintamono" <pintamono@NoMandeWeas.kk> escribi� en el mensaje >> news:73a2d0f1f74ebfdede4c3cc14a267ce5$1@usenet.no-ip.com... >>> Tengo la siguiente expresion regular: >>> >>> ([SNsn])([a-zA-Z0-9 ]+)\s([a-zA-Z0-9 ]+)\r\n([\s\S]*) >>> >>> Esta expresion me acepta texto del tipo >>> >>> |S150 RTF3434 >>> 1 23 4 5 6 7 8 9 0 >>> >>> Y >>> |S150 RTF3434 >>> 1 23 4 5 6 7 8 9 0 >>> >>> Pero no me deja obviar el segundo campo de la primera linea, es decir... >>> >>> |S150 >>> 1 23 4 5 6 7 8 9 0 >>> >>> Esto no pasa. >>> >>> Considerando que el * es el comodin >>> >>> Probe con >>> >>> ([SNsn])([a-zA-Z0-9 ]+)\s*([a-zA-Z0-9 ]+)\r\n([\s\S]*) >>> ([SNsn])([a-zA-Z0-9 ]+)\s(*[a-zA-Z0-9 ]+)\r\n([\s\S]*) >>> ([SNsn])([a-zA-Z0-9 ]+)\s([a-zA-Z0-9 ]*+)\r\n([\s\S]*) >>> >>> Sin obtener resultados positivos... >>> >>> >>> Como puedo dejar la expresion para que el segundo campo aparezca 0 o 1 >>> vez >>> solamente? >>> >>> Gracias!!! >>> >>> Nota: Lo que necesito es ingresar texto del tipo >>> >>> |S150 RTF1 >>> 1 avisos 23 4 5 6 7 8 9 0 >>> |S151 RtF2 >>> 2 avisos 23 4 5 6 7 8 9 0 >>> |S505 rtf3 >>> 3 avisos 23 4 5 6 7 8 9 0 >>> |S460 >>> 4 avisos 23 4 5 6 7 8 9 0 >>> |S200 ftr4 >>> 5 avisos 23 4 5 6 7 8 9 0 >>> |S800 ppp5 >>> 6 avisos 23 4 5 6 7 8 9 0 >>> > >
Re: Expresion Regular II
Author: Pintamono
Date: Fri, 19 Oct 2007 20:20
Date: Fri, 19 Oct 2007 20:20
68 lines
2443 bytes
2443 bytes
Gracias pero no me sirvio... +mArkO+ wrote: > no soy muy entendido en el tema, pero podria ser: > ([SNsn])([a-zA-Z0-9 ]+)\s([a-zA-Z0-9 ]*)(\r\n)*([\s\S]*) > + =>1 � mas veces > * =>o � mas veces > "Pintamono" <pintamono@NoMandeWeas.kk> escribi� en el mensaje > news:73a2d0f1f74ebfdede4c3cc14a267ce5$1@usenet.no-ip.com... >> Tengo la siguiente expresion regular: >> >> ([SNsn])([a-zA-Z0-9 ]+)\s([a-zA-Z0-9 ]+)\r\n([\s\S]*) >> >> Esta expresion me acepta texto del tipo >> >> |S150 RTF3434 >> 1 23 4 5 6 7 8 9 0 >> >> Y >> |S150 RTF3434 >> 1 23 4 5 6 7 8 9 0 >> >> Pero no me deja obviar el segundo campo de la primera linea, es decir... >> >> |S150 >> 1 23 4 5 6 7 8 9 0 >> >> Esto no pasa. >> >> Considerando que el * es el comodin >> >> Probe con >> >> ([SNsn])([a-zA-Z0-9 ]+)\s*([a-zA-Z0-9 ]+)\r\n([\s\S]*) >> ([SNsn])([a-zA-Z0-9 ]+)\s(*[a-zA-Z0-9 ]+)\r\n([\s\S]*) >> ([SNsn])([a-zA-Z0-9 ]+)\s([a-zA-Z0-9 ]*+)\r\n([\s\S]*) >> >> Sin obtener resultados positivos... >> >> >> Como puedo dejar la expresion para que el segundo campo aparezca 0 o 1 vez >> solamente? >> >> Gracias!!! >> >> Nota: Lo que necesito es ingresar texto del tipo >> >> |S150 RTF1 >> 1 avisos 23 4 5 6 7 8 9 0 >> |S151 RtF2 >> 2 avisos 23 4 5 6 7 8 9 0 >> |S505 rtf3 >> 3 avisos 23 4 5 6 7 8 9 0 >> |S460 >> 4 avisos 23 4 5 6 7 8 9 0 >> |S200 ftr4 >> 5 avisos 23 4 5 6 7 8 9 0 >> |S800 ppp5 >> 6 avisos 23 4 5 6 7 8 9 0 >>
Re: Expresion Regular II
Author: Pintamono
Date: Fri, 19 Oct 2007 20:24
Date: Fri, 19 Oct 2007 20:24
104 lines
4006 bytes
4006 bytes
Gracias, Las cadenas son asi por ejemplo |S130 cod1 1 texto 23 4 5 6 7 8 9 0 |S136 cod2 2 texto 23 4 5 6 7 8 9 0 |S202 cod3 3 texto 23 4 5 6 7 8 9 0 |S130 4 texto 23 4 5 6 7 8 9 0 |S130 cod4 5 texto 23 4 5 6 7 8 9 0 |S130 cod5 6 texto 23 4 5 6 7 8 9 0 puede venir un campo |S111 y en la misma linea puede venir o no un valor alfanumerico "rtfg3432" luego una linea nueva con texto. Logré esto: ([SNsn])([a-zA-Z0-9]*)(\s*)+([a-zA-Z0-9]*)\n([a-zA-Z0-9 ]*) Pero en el caso de "cod2" no me lo toma en cuenta ya que despues del "2" puede venir un espacio y esa expresion no lo considera, si agego el espacio se va a las pailas mi super expresion... jajaj Gracias again... On 19 oct, 16:30, "+mArkO+" <ki...@porta.com> wrote: > no entendi muy bien tu ejemplo, podrias aclararlo mas cuales son las cadenas > que deseas validar > > "Pintamono" <pintam...@NoMandeWeas.kk> escribió en el mensajenews:dc126c20d349aa26aaf5b790c09a069f$1@usenet.no-ip.com... > > > Gracias pero no me sirvio... > > > +mArkO+ wrote: > > >> no soy muy entendido en el tema, pero podria ser: > > >> ([SNsn])([a-zA-Z0-9 ]+)\s([a-zA-Z0-9 ]*)(\r\n)*([\s\S]*) > > >> + =>1 ó mas veces > >> * =>o ó mas veces > > >> "Pintamono" <pintam...@NoMandeWeas.kk> escribió en el mensaje > >>news:73a2d0f1f74ebfdede4c3cc14a267ce5$1@usenet.no-ip.com... > >>> Tengo la siguiente expresion regular: > > >>> ([SNsn])([a-zA-Z0-9 ]+)\s([a-zA-Z0-9 ]+)\r\n([\s\S]*) > > >>> Esta expresion me acepta texto del tipo > > >>> |S150 RTF3434 > >>> 1 23 4 5 6 7 8 9 0 > > >>> Y > >>> |S150 RTF3434 > >>> 1 23 4 5 6 7 8 9 0 > > >>> Pero no me deja obviar el segundo campo de la primera linea, es decir... > > >>> |S150 > >>> 1 23 4 5 6 7 8 9 0 > > >>> Esto no pasa. > > >>> Considerando que el * es el comodin > > >>> Probe con > > >>> ([SNsn])([a-zA-Z0-9 ]+)\s*([a-zA-Z0-9 ]+)\r\n([\s\S]*) > >>> ([SNsn])([a-zA-Z0-9 ]+)\s(*[a-zA-Z0-9 ]+)\r\n([\s\S]*) > >>> ([SNsn])([a-zA-Z0-9 ]+)\s([a-zA-Z0-9 ]*+)\r\n([\s\S]*) > > >>> Sin obtener resultados positivos... > > >>> Como puedo dejar la expresion para que el segundo campo aparezca 0 o 1 > >>> vez > >>> solamente? > > >>> Gracias!!! > > >>> Nota: Lo que necesito es ingresar texto del tipo > > >>> |S150 RTF1 > >>> 1 avisos 23 4 5 6 7 8 9 0 > >>> |S151 RtF2 > >>> 2 avisos 23 4 5 6 7 8 9 0 > >>> |S505 rtf3 > >>> 3 avisos 23 4 5 6 7 8 9 0 > >>> |S460 > >>> 4 avisos 23 4 5 6 7 8 9 0 > >>> |S200 ftr4 > >>> 5 avisos 23 4 5 6 7 8 9 0 > >>> |S800 ppp5 > >>> 6 avisos 23 4 5 6 7 8 9 0
Re: Expresion Regular II
Author: Pablo Jimenez
Date: Fri, 19 Oct 2007 21:39
Date: Fri, 19 Oct 2007 21:39
43 lines
2327 bytes
2327 bytes
Pintamono <pintamono79@yahoo.es> dijo: > Gracias, > > Las cadenas son asi por ejemplo > > |S130 cod1 > 1 texto 23 4 5 6 7 8 9 0 > |S136 cod2 > 2 texto 23 4 5 6 7 8 9 0 > |S202 cod3 > 3 texto 23 4 5 6 7 8 9 0 > |S130 > 4 texto 23 4 5 6 7 8 9 0 > |S130 cod4 > 5 texto 23 4 5 6 7 8 9 0 > |S130 cod5 > 6 texto 23 4 5 6 7 8 9 0 > > puede venir un campo |S111 y en la misma linea puede venir o no un > valor alfanumerico "rtfg3432" luego una linea nueva con texto. > > Logr? esto: > > ([SNsn])([a-zA-Z0-9]*)(\s*)+([a-zA-Z0-9]*)\n([a-zA-Z0-9 ]*) > > Pero en el caso de "cod2" no me lo toma en cuenta ya que despues del > "2" puede venir un espacio y esa expresion no lo considera, si agego > el espacio se va a las pailas mi super expresion... Aún así, no queda claro el ejemplo. ¿A qué corresponden esas cadenas "1 texto..."? Si es por el espacio, tal vez sirva algo como: ([nsNS][a-zA-Z0-9]+)\s+([a-zA-Z0-9\ ]*)\n([a-zA-Z0-9\ ]*) Aunque como no has dicho si el espacio es relevante para cada campo y tampoco has mencionado en qué lenguaje estás programando, ni idea si es aplicable... (por ejemplo, en Perl \s representa [\ \t\r\n\f], de acuerdo a perlretut). -- Pablo Jimenez
Re: Expresion Regular II
Author: Jos� Miguel Santib��ez
Date: Sat, 20 Oct 2007 04:36
Date: Sat, 20 Oct 2007 04:36
53 lines
2555 bytes
2555 bytes
En el cap�tulo anterior (news:73a2d0f1f74ebfdede4c3cc14a267ce5$1@usenet.no-ip.com), pintamono@NoMandeWeas.kk (Pintamono) dijo: > Tengo la siguiente expresion regular: > > ([SNsn])([a-zA-Z0-9 ]+)\s([a-zA-Z0-9 ]+)\r\n([\s\S]*) > > Esta expresion me acepta texto del tipo > >|S150 RTF3434 > 1 23 4 5 6 7 8 9 0 > > Y >|S150 RTF3434 > 1 23 4 5 6 7 8 9 0 > > Pero no me deja obviar el segundo campo de la primera linea, es > decir... > >|S150 > 1 23 4 5 6 7 8 9 0 > > Esto no pasa. > > Considerando que el * es el comodin > > Probe con > > ([SNsn])([a-zA-Z0-9 ]+)\s*([a-zA-Z0-9 ]+)\r\n([\s\S]*) > ([SNsn])([a-zA-Z0-9 ]+)\s(*[a-zA-Z0-9 ]+)\r\n([\s\S]*) > ([SNsn])([a-zA-Z0-9 ]+)\s([a-zA-Z0-9 ]*+)\r\n([\s\S]*) y con: [SNsn][a-zA-Z0-9]+\s*[a-zA-Z0-9]*\r\n[^\r\n]+ No me queda claro el tema de los par�ntesis... �necesitas recuperar los subpatrones??? Imagino que con subpatrones, queda mejor como: ([SNsn][a-zA-Z0-9]+)\s*([a-zA-Z0-9]*)\r\n([^\r\n]+) ojo que [\s\S]* es equivalente a .* aunque creo que queda m�s sano por cualquier cosa que no sea un \n o un \r Al menos usando el preg_match_all de php funciona adecuadamente... Salute! -- Apoye a la campa�a de alfabetizaci�n y | Jose M. Santiba�ez A. ordenaci�n de las news, cada post en su | <jms@nivel5.cl> lugar y el lugar exacto para cada post | <http://caos.cl/jms>
Re: Expresion Regular II
Author: Luis León Cárdenas Graide
Date: Mon, 22 Oct 2007 20:37
Date: Mon, 22 Oct 2007 20:37
66 lines
3263 bytes
3263 bytes
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
El Vie 19 Oct 2007 18:39 escuch� un rumor en chile.comp.programacion donde
Pablo Jimenez dijo:
> Pintamono <pintamono79@yahoo.es> dijo:
>> Gracias,
>>
>> Las cadenas son asi por ejemplo
>>
>> |S130 cod1
>> 1 texto 23 4 5 6 7 8 9 0
>> |S136 cod2
>> 2 texto 23 4 5 6 7 8 9 0
>> |S202 cod3
>> 3 texto 23 4 5 6 7 8 9 0
>> |S130
>> 4 texto 23 4 5 6 7 8 9 0
>> |S130 cod4
>> 5 texto 23 4 5 6 7 8 9 0
>> |S130 cod5
>> 6 texto 23 4 5 6 7 8 9 0
>>
>> puede venir un campo |S111 y en la misma linea puede venir o no un
>> valor alfanumerico "rtfg3432" luego una linea nueva con texto.
>>
>> Logr? esto:
>>
>> ([SNsn])([a-zA-Z0-9]*)(\s*)+([a-zA-Z0-9]*)\n([a-zA-Z0-9 ]*)
>>
>> Pero en el caso de "cod2" no me lo toma en cuenta ya que despues del
>> "2" puede venir un espacio y esa expresion no lo considera, si agego
>> el espacio se va a las pailas mi super expresion...
>
> A�n as�, no queda claro el ejemplo.
> �A qu� corresponden esas cadenas "1 texto..."?
>
> Si es por el espacio, tal vez sirva algo como:
>
> ([nsNS][a-zA-Z0-9]+)\s+([a-zA-Z0-9\ ]*)\n([a-zA-Z0-9\ ]*)
>
> Aunque como no has dicho si el espacio es relevante para cada campo y
> tampoco has mencionado en qu� lenguaje est�s programando, ni idea si es
> aplicable... (por ejemplo, en Perl \s representa [\ \t\r\n\f], de
> acuerdo a perlretut).
Si est�s usando Perl, prueba con los modificadores /g o /s.
Adem�s puedes tener problema con que sea "\n", "\r" o "\r\n". Yo usar�a [\r\n
{1,2}
- --
Luis Le�n C�rdenas Graide - www.linkedin.com/in/luiscardenasgraide
PGP FingerPrint: 437E 48AB 0093 62AC 07DA F016 EBD8 DBD3 2ECE 5829
Linux User #415.072 - http://counter.li.org
liberaciondigital.org: Ciudadanos frente a las pol�ticas tecnol�gicas
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
iD8DBQFHHQn+69jb0y7OWCkRAtksAJ4seXODnpUcgshGEtR8lOQWvC5ENwCgrxPO
3bMIzX+jzkwgVQORrTc6N3E=
=Ies6
-----END PGP SIGNATURE-----
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads