Escape de la cadena de expresiones regulares en Python

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

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

4.2.3 re Contenido del Módulo

escapar

Devuelva la cadena con todos los caracteres no alfanuméricos con barra diagonal inversa; esto es útil si desea hacer coincidir una cadena literal arbitraria que puede tener metacaracteres de expresiones regulares.

Un ejemplo simplista, busque cualquier aparición de la cadena provista opcionalmente seguida de ‘s’, y devuelva el objeto coincidente.

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

Puedes usar re.escape () :

re.escape (cadena) Devuelve cadena con todos los caracteres no alfanuméricos con barra diagonal inversa; esto es útil si desea hacer coincidir una cadena literal arbitraria que puede tener metacaracteres de expresiones regulares.

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

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 un lambda:

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

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

Por favor intentarlo:

\ Q y \ E como anclajes

Coloque una condición O para que coincida con una palabra completa o una expresión regular.

Ref Link: cómo hacer coincidir una palabra completa que incluye caracteres especiales en expresiones regulares