🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: chile.comp.programacion
8 messages
8 total messages Started by Pintamono Fri, 19 Oct 2007 16:55
Expresion Regular II
#740
Author: Pintamono
Date: Fri, 19 Oct 2007 16:55
50 lines
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
#741
Author: +mArkO+
Date: Fri, 19 Oct 2007 16:09
61 lines
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
#745
Author: +mArkO+
Date: Fri, 19 Oct 2007 19:30
77 lines
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
#744
Author: Pintamono
Date: Fri, 19 Oct 2007 20:20
68 lines
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
#746
Author: Pintamono
Date: Fri, 19 Oct 2007 20:24
104 lines
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
#747
Author: Pablo Jimenez
Date: Fri, 19 Oct 2007 21:39
43 lines
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
#750
Author: Jos� Miguel Santib��ez
Date: Sat, 20 Oct 2007 04:36
53 lines
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
#753
Author: Luis León Cárdenas Graide
Date: Mon, 22 Oct 2007 20:37
66 lines
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