2008-10-26 18 views
8

¿Hay una manera simple de admitir comodines ("*") al buscar cadenas, sin usar RegEx?¿Cómo puedo admitir comodines en cadenas de búsqueda definidas por el usuario en Python?

Los usuarios se supone que introducir términos de búsqueda utilizando comodines, pero no deberían tener que lidiar con la complejidad de expresiones regulares:

"foo*" => str.startswith("foo") 
"*foo" => str.endswith("foo") 
"*foo*" => "foo" in str 

(se vuelve más complicado cuando hay varios términos de búsqueda, sin embargo, por ejemplo, "foo bar baz ")

Esto parece ser un problema común, por lo que me pregunto si existe una solución lista para ello.

¡Cualquier ayuda sería muy apreciada!

+0

Para hacer preguntas de programación normales, no marque su pregunta como "comunidad wiki". Nadie (incluyéndote a ti) obtiene ninguna reputación por ese tipo de pregunta. Veo que eres nuevo aquí, así que no te preocupes, solo tenlo en cuenta para la próxima vez. –

+0

¿Qué pasa con las excepciones regulares? – Hortitude

+0

Primero, sus ** expresiones ** regulares. En segundo lugar, ¿no sería tan fácil escapar de la entrada que necesita escaparse para regex, convertir '*' en '. *' Y ejecutarlo a través del módulo regex? –

Respuesta

14

Puede probar el módulo fnmatch, tiene una sintaxis comodín tipo concha.

Cuestiones relacionadas