Ayuda por favor: Expresiones regulares

28/04/2006 - 07:27 por XTV | Informe spam
¡Por favor!, me voy a volver loco y no voy a conseguir sacar la expresión
que necesito, a ver si me puede hechar una manito, please!!!

Tengo una lista con datos de este tipo:

OF.0920
PC 656
OF.0980
RM 2241
OF.3114
REM: 02233
OF.4003
OF.4036
03410-RM
OF.4557

Y lo que quiero es capturar el número que haya de entre 3 y 6 cifrás de cada
línea, excepto de las que empiezan por "OF."

He provado todo esto; que se acerca pero no es eso exactamente:

\b(?:(?!OF.)\w)+\s?\d{3,6}\s?

\b(?:(?!OF.)\w)+\b\s?\d{3,6}\s?

\b(?:(?![OF]+\x46)\w)+\b

\b(\w|\.|\-)+\b

A ver si alguién que me ayuda a dar con la clave; muchisimas gracias

XTV

Preguntas similare

Leer las respuestas

#1 Leonardo Azpurua [mvp vb]
28/04/2006 - 17:00 | Informe spam
"XTV" escribió en el mensaje
news:
¡Por favor!, me voy a volver loco y no voy a conseguir sacar la expresión
que necesito, a ver si me puede hechar una manito, please!!!

Tengo una lista con datos de este tipo:

OF.0920
PC 656
OF.0980
RM 2241
OF.3114
REM: 02233
OF.4003
OF.4036
03410-RM
OF.4557

Y lo que quiero es capturar el número que haya de entre 3 y 6 cifrás de
cada línea, excepto de las que empiezan por "OF."

He provado todo esto; que se acerca pero no es eso exactamente:

\b(?:(?!OF.)\w)+\s?\d{3,6}\s?

\b(?:(?!OF.)\w)+\b\s?\d{3,6}\s?

\b(?:(?![OF]+\x46)\w)+\b

\b(\w|\.|\-)+\b

A ver si alguién que me ayuda a dar con la clave; muchisimas gracias



Hola, XTV:

Usar las expresiones regulares para definir lo que NO debe cumplirse por lo
general es exasperantemente difícil (porque fueron concebidas para
determinar aserciones, no negaciones).

¿Hay alguna razón para que no puedas combinar las expresiones regulares para
extraer con un simple Left para filtrar?

If Left(x, 2) <> "OF" Then
...extraes y procesas los digitos...
Else
... lo que tengas que hacer con las OF...
End If


Salud!
Respuesta Responder a este mensaje
#2 XTV
30/04/2006 - 21:54 | Informe spam
Si, si finalmente lo he hecho de esa manera; pero ya se convertío casi en un
reto; pues le he dado muchas vueltas y lo mejor que he conseguido son las
expresiones que he puesto, pero no son lo que me hubiese gustado.

¡No puede ser que sea imposible!; pero yo no sé cómo. Quería ver si alguién
sabe para aprender cómo se hace para otra próxima vez

Saludos

Xtv


"Leonardo Azpurua [mvp vb]" <l e o n a r d o (arroba) m v p s (punto) o r g>
escribió en el mensaje news:O%

"XTV" escribió en el mensaje
news:
¡Por favor!, me voy a volver loco y no voy a conseguir sacar la expresión
que necesito, a ver si me puede hechar una manito, please!!!

Tengo una lista con datos de este tipo:

OF.0920
PC 656
OF.0980
RM 2241
OF.3114
REM: 02233
OF.4003
OF.4036
03410-RM
OF.4557

Y lo que quiero es capturar el número que haya de entre 3 y 6 cifrás de
cada línea, excepto de las que empiezan por "OF."

He provado todo esto; que se acerca pero no es eso exactamente:

\b(?:(?!OF.)\w)+\s?\d{3,6}\s?

\b(?:(?!OF.)\w)+\b\s?\d{3,6}\s?

\b(?:(?![OF]+\x46)\w)+\b

\b(\w|\.|\-)+\b

A ver si alguién que me ayuda a dar con la clave; muchisimas gracias



Hola, XTV:

Usar las expresiones regulares para definir lo que NO debe cumplirse por
lo general es exasperantemente difícil (porque fueron concebidas para
determinar aserciones, no negaciones).

¿Hay alguna razón para que no puedas combinar las expresiones regulares
para extraer con un simple Left para filtrar?

If Left(x, 2) <> "OF" Then
...extraes y procesas los digitos...
Else
... lo que tengas que hacer con las OF...
End If


Salud!


Respuesta Responder a este mensaje
#3 Eduardo A. Morcillo [MS MVP VB]
01/05/2006 - 00:43 | Informe spam
Prueba esta expresion:

^(?<!OF.)\w+:{0,1}\s*(\d{3,5})

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C
Respuesta Responder a este mensaje
#4 XTV
02/05/2006 - 07:26 | Informe spam
Muchas gracias por tu ayuda Eduardo; de todas formas la expresión regular
que me sugieres no da ningun resultado.

Para testear las expresiones regulares estoy usando el programa Regex Buddy
que simplifica mucho el trabajo con RegEx. Si lo quieres probar puedes
bajarlo de:
http://www.softpile.com/Development...852_1.html

Saludos

XTV

"Eduardo A. Morcillo [MS MVP VB]" <emorcillo .AT. mvps.org> escribió en el
mensaje news:O3l%
Prueba esta expresion:

^(?<!OF.)\w+:{0,1}\s*(\d{3,5})

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C

Respuesta Responder a este mensaje
#5 Eduardo A. Morcillo [MS MVP VB]
02/05/2006 - 08:16 | Informe spam
Yo uso The Regulator. Fijate que la expresion empieza con ^ con lo cual la
expresion lo primero que hace es ver si esta al principio de la linea. Si
estas usando la expresion y no estas usando multilinea la expresion no va a
funcionar como corresponde porque tomara todo el texto como una sola linea,
evaluandolo una sola vez.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida