Autor
|
Tema: Problema con expresiones regulares (Leído 4,298 veces)
|
Debci
Wiki
Desconectado
Mensajes: 2.021
Actualizate o muere!
|
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: #!/usr/bin/python import re while True: palabra = raw_input("Introduce tu expresion para ver si coincide:\n"); if re.match("http://(.+)\net", palabra): print "Cierto" else: print "Falso"
Si en teoria introduzco http://www.google.netDeberia 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
Mensajes: 3.069
/^$/
|
+ es un cuantificador y busca 1 o más elementos. Prueba así: if re.match("http://(.+)\.net", palabra): if re.match("http://(.*)\.net", palabra): PD: No sé regexp con python, así que no esperes que funcione.
|
|
|
En línea
|
|
|
|
Debci
Wiki
Desconectado
Mensajes: 2.021
Actualizate o muere!
|
+ es un cuantificador y busca 1 o más elementos. Prueba así: if re.match("http://(.+)\.net", palabra): 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
Mensajes: 3.069
/^$/
|
De nada.
|
|
|
En línea
|
|
|
|
~ Yoya ~
Wiki
Desconectado
Mensajes: 1.125
|
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.... #!/usr/bin/python import re while True: palabra = raw_input("Introduce tu expresion para ver si coincide:\n"); if re.match("http://\w+?\.?\w+\.?[net|com|org]", palabra): print "Cierto" else: print "Falso"
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
Mensajes: 3.069
/^$/
|
También se podría utilizar '$' si quieres limitar la cadena.
|
|
|
En línea
|
|
|
|
Debci
Wiki
Desconectado
Mensajes: 2.021
Actualizate o muere!
|
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.... #!/usr/bin/python import re while True: palabra = raw_input("Introduce tu expresion para ver si coincide:\n"); if re.match("http://\w+?\.?\w+\.?[net|com|org]", palabra): print "Cierto" else: print "Falso"
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
Mensajes: 1.125
|
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
|
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
Mensajes: 1.125
|
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.
|
|
|
|
|