¿Cómo usar los símbolos de expresión regular ‘\ Q’ y ‘\ E’ en python?

Pensé que esto debería funcionar, pero no lo hace:

import re if re.match("\Qbla\E", "bla"): print "works!" 

¿Por qué no funciona? ¿Puedo usar los símbolos ‘\ Q’ y ‘\ E’ en python? ¿Cómo?

El motor de expresiones regulares de Python no los admite; consulte §7.2.1 “Sintaxis de expresiones regulares” en la documentación de Python para obtener una lista de lo que admite. Sin embargo, puede obtener el mismo efecto escribiendo re.match(re.escape("bla"), "bla") ; re.escape es una función que inserta barras invertidas antes de todos los caracteres especiales.

Por cierto, generalmente debe usar cadenas “sin procesar”, r"..." lugar de simplemente "..." , ya que de lo contrario las barras invertidas se procesarán dos veces (una vez que se analiza la cadena y luego otra vez por el motor de expresiones regulares) ), lo que significa que tienes que escribir cosas como \\b lugar de \b . El uso de r"..." impide el primer paso de procesamiento, por lo que puede escribir \b .

Desafortunadamente, Python no admite las secuencias de escape \Q y \E Solo tienes que escapar de todo tu mismo.

Python no soporta \ Q … \ E. Ref: http://www.regular-expressions.info/refflavors.html

Pero eso no significa que no admita cadenas de metacaracteres que se escapan. Ref: http://docs.python.org/library/re.html#re.escape