validar regulares python3 para online fechas expresiones ejemplos cadenas python regex

python3 - Escapar de la cadena de expresiones regulares en Python



expresiones regulares python pdf (4)

Quiero utilizar la entrada de un usuario como un patrón de expresiones regulares para buscar sobre algún texto. Funciona, pero ¿cómo puedo manejar los casos en los que el usuario pone caracteres que tienen significado en expresiones regulares? Por ejemplo, el usuario quiere buscar Word (s) : el motor regex tomará el (s) grupo (s) . Quiero que lo trate como una cadena "(s)" . Puedo ejecutar replace en la entrada del usuario y reemplazar el ( con /( y the ) con /) pero el problema es que tendré que reemplazarlo por cada posible símbolo de expresión regular. ¿Conoces alguna forma mejor?


Desafortunadamente, re.escape() no es adecuado para la cadena de reemplazo:

>>> re.sub(''a'', re.escape(''_''), ''aa'') ''//_//_''

Una solución es poner el reemplazo en una lambda:

>>> re.sub(''a'', lambda _: ''_'', ''aa'') ''__''

porque el valor de retorno de la lambda es tratado por re.sub() como una cadena literal.



Puedes usar re.escape () :

re.escape (string) Retorno de cadena con todos los caracteres no alfanuméricos retrocedidos; esto es útil si desea hacer coincidir una cadena literal arbitraria que puede tener metacaracteres de expresiones regulares en ella.

>>> import re >>> re.escape(''^a.*$'') ''//^a//.//*//$''


Use la función re.escape() para esto:

4.2.3 re Contenidos del módulo

escape (cadena)

Cadena de retorno con todos los caracteres no alfanuméricos retroceden; esto es útil si desea hacer coincidir una cadena literal arbitraria que puede tener metacaracteres de expresiones regulares en ella.

Un ejemplo simplista, busca cualquier ocurrencia de la cadena provista, seguida opcionalmente de ''s'', y devuelve el objeto de coincidencia.

def simplistic_plural(word, text): word_or_plural = re.escape(word) + ''s?'' return re.match(word_or_plural, text)