elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Problema con expresiones regulares
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con expresiones regulares  (Leído 4,298 veces)
Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Problema con expresiones regulares
« en: 21 Agosto 2010, 22:05 pm »

Hola a todos, hace un rato me ha dado el puntazo de hacerme un parser para una pagina web y he decidido hacerlo en Python, he leido la doc de las regexp con algunos ejemplos, pero no funciona como deberia, al menos eso me parece a mi:

Código
  1. #!/usr/bin/python
  2. import re
  3. while True:
  4.  palabra = raw_input("Introduce tu expresion para ver si coincide:\n");
  5.  if re.match("http://(.+)\net", palabra):
  6.     print "Cierto"
  7.  else:
  8.     print "Falso"
  9.  

Si en teoria introduzco http://www.google.net
Deberia devolverme cierto no?
Pero no es asi.
No tengo claro del todo que hace el + pero creo que concatena las dos cadenas, es como el divisor entre miembros, pero no estoy seguro.

Saludos


En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Problema con expresiones regulares
« Respuesta #1 en: 21 Agosto 2010, 22:54 pm »

+ es un cuantificador y busca 1 o más elementos.

Prueba así:
Código:
if re.match("http://(.+)\.net", palabra):

Código:
if re.match("http://(.*)\.net", palabra):

PD: No sé regexp con python, así que no esperes que funcione.


En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Re: Problema con expresiones regulares
« Respuesta #2 en: 21 Agosto 2010, 22:57 pm »

+ es un cuantificador y busca 1 o más elementos.

Prueba así:
Código:
if re.match("http://(.+)\.net", palabra):

Código:
if re.match("http://(.*)\.net", palabra):

PD: No sé regexp con python, así que no esperes que funcione.
Jaja pues funciona xD

Gracias men :)

Saludos
En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Problema con expresiones regulares
« Respuesta #3 en: 21 Agosto 2010, 22:59 pm »

De nada.
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: Problema con expresiones regulares
« Respuesta #4 en: 22 Agosto 2010, 00:23 am »

Bueno, aunque leo dio una respuesta, ps detallo un poco mas.

Tu error esta aqui.
http://(.+)\net
Estas indicando que existe una nueva linea y por lo tanto siempre la expresión fallara...

Nose porque usas los paréntesis, ya que no capturas nada....
Código
  1. #!/usr/bin/python
  2. import re
  3. while True:
  4.  palabra = raw_input("Introduce tu expresion para ver si coincide:\n");
  5.  if re.match("http://\w+?\.?\w+\.?[net|com|org]", palabra):
  6.     print "Cierto"
  7.  else:
  8.     print "Falso"
  9.  
Acepto http://www.google.net, http://google.net, http://www.google.com, etc...
En línea

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Problema con expresiones regulares
« Respuesta #5 en: 22 Agosto 2010, 10:12 am »

También se podría utilizar '$' si quieres limitar la cadena.
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Re: Problema con expresiones regulares
« Respuesta #6 en: 22 Agosto 2010, 11:04 am »

Bueno, aunque leo dio una respuesta, ps detallo un poco mas.

Tu error esta aqui.
http://(.+)\net
Estas indicando que existe una nueva linea y por lo tanto siempre la expresión fallara...

Nose porque usas los paréntesis, ya que no capturas nada....
Código
  1. #!/usr/bin/python
  2. import re
  3. while True:
  4.  palabra = raw_input("Introduce tu expresion para ver si coincide:\n");
  5.  if re.match("http://\w+?\.?\w+\.?[net|com|org]", palabra):
  6.     print "Cierto"
  7.  else:
  8.     print "Falso"
  9.  
Acepto http://www.google.net, http://google.net, http://www.google.com, etc...
Pues no veo donde le indicaste la coma final y todo eso xD
Por cierto para que sirve el "?"?

Saludos
En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: Problema con expresiones regulares
« Respuesta #7 en: 22 Agosto 2010, 16:41 pm »

No entiendo a que te refieres con la coma final...

el signo de interrogación ?, sirve para indicar que algo puede aparecer máximo una sola vez...
En línea

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.
Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.724


<3


Ver Perfil WWW
Re: Problema con expresiones regulares
« Respuesta #8 en: 22 Agosto 2010, 19:36 pm »

Supongo que se refiere a estó... -Sería un Pwned muy coño-
En línea

Te vendería mi talento por poder dormir tranquilo.
~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: Problema con expresiones regulares
« Respuesta #9 en: 22 Agosto 2010, 23:13 pm »

jajaja, las comas ya son otro tema...
En línea

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema expresiones regulares
Programación General
luiggy2 2 2,638 Último mensaje 8 Noviembre 2012, 20:32 pm
por luiggy2
[ayuda][python]problema con expresiones regulares
Scripting
daryo 3 2,552 Último mensaje 16 Enero 2014, 04:38 am
por Once
Problema con Expresiones regulares
.NET (C#, VB.NET, ASP)
Lekim 6 3,295 Último mensaje 24 Enero 2016, 10:02 am
por Lekim
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines