validar regulares regular python3 para online metacaracter fechas expresiones expresion comodines cadenas python

python3 - python string expresiones regulares



Búsqueda de comodín en Python en una cadena (6)

¿Te refieres a alguna sintaxis específica para comodines? Normalmente * representa "uno o muchos" caracteres y ? representa uno.

La forma más simple es probablemente traducir una expresión de comodín en una expresión regular, luego usarla para filtrar los resultados.

Digamos que tengo una lista

list = [''this'',''is'',''just'',''a'',''test'']

¿Cómo puedo hacer que un usuario haga una búsqueda con comodines?

Palabra de búsqueda: ''th_s''

Volvería ''esto''


El método fácil es try os.system :

import os text = ''this is text'' os.system("echo %s | grep ''t*''" % text)


La misma idea que Yuushi en el uso de expresiones regulares, pero esto utiliza el método findall dentro de la biblioteca re en lugar de una lista de comprensión:

import re regex = re.compile(''th.s'') l = [''this'', ''is'', ''just'', ''a'', ''test''] matches = re.findall(regex, string)


Las expresiones regulares son probablemente la solución más fácil a este problema:

import re regex = re.compile(''th.s'') l = [''this'', ''is'', ''just'', ''a'', ''test''] matches = [string for string in l if re.match(regex, string)]



Use fnmatch :

import fnmatch lst = [''this'',''is'',''just'',''a'',''test''] filtered = fnmatch.filter(lst, ''th?s'')

Si desea permitir _ como un comodín, simplemente replace todos los guiones bajos con ''?'' (para un personaje) o * (para caracteres múltiples).

Si desea que sus usuarios usen opciones de filtrado aún más potentes, considere permitirles usar expresiones regulares .