[Python-es] regex

gerardo Juarez gerardojuarez en buyteknet.info
Jue Ene 27 20:30:58 CET 2011


Hola,

Entiendo que quieres buscar que todas las palabras de la cadena estén 
presentes, en cualquier orden, por lo menos una vez.
Si esto es correcto, no te convendría mejor separar estas palabras y 
buscarlas una por una? Una expresión regular para esto,
especialmente *si pueden cambiar de orden* me parece que sería algo 
rebuscado, si es que es posible (no se me ocurre como
de momento). Algo así como:

# s es la cadena a probar; cad contiene las palabras a buscar en 's'.
s = "xxxxx"
for p in cad.split():
    if not s.find(p):
        return 'no-match'
# si llega aqui, encontró todas las palabras de la lista
return 'match'

Lo simple del código me sugiere que podría ser la solución más correcta 
y transparente.

Gerardo

chakalinux wrote:
> Hola, intento buscar palabras en una cadena usando regexp, a ver si me 
> explico, si tengo por ejemplo esta cadena:
>
> cad = u"hola como están"
>
> Quiero que me re me encuentre la cadena cad (puede variar) 
> independientemente de su posición, (creo que se llama lookahead), o sea:
>
> "como estan ustedes hola" => true
> "hola, ustedes estan bien ? como están" => true
> [...]
>
> Solo he llegado a esto:
>
> re.match("(?=.*hola)(?=.*como)(?=.*est.n)", cad)
>
> Esto me funciona pero no me interesa ya que me devuelve siempre true 
> aunque ponga: "<algo>hola <algo>como <algo>estan" y si quito ".*" no 
> me funciona y solo me interesa que encuentra las palabras exactas 
> independientemente del orden que estén.
>
> ...
>
>
> Un saludo
> ------------------------------------------------------------------------
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>   



Más información sobre la lista de distribución Python-es