El día 27 de enero de 2011 18:27, chakalinux <chakali...@gmail.com> escribió:
> 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.

No entiendo bien qué problema planteas. El "lookahead" ("ver
adelante") sirve para vincular un patrón de búsqueda con lo que
aparece más adelante en la cadena. En realidad en el patrón de
búsqueda que propones no indicas qué tiene que buscar (los "lookahead"
no seleccionan nada).

Si tienes las cosas claras, puede que el módulo 're' sirva para tus
propósitos, pero a veces es mejor no obsesionarse con ello y tratar de
hacerte tus propias búsquedas a medida. Otra forma de verlo es
descomponiendo el problema en procesos más sencillos, tal vez
concatenando dos búsquedas.
_______________________________________________
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Responder a