2010-11-16 10 views
5

Tengo la siguiente expresión regular, que me permite analizar porcentajes como '20% + ', '20%' o '20% - 50% 'usando re.split.Python: Cadena de formato de una serie de expresiones regulares que utiliza tanto '%' como '{' como caracteres

'([0-9]{1,3}[%])([+-]?)' 

Quiero usar formato de cadena para pasar los identificadores de la serie (es decir, '+ -') como un argumento de config.py.

SERIES = '+-' 

Los dos métodos que he probado producen errores. formateo de nuevo estilo se encuentra con el siguiente error (debido a la {m, n} Usos):

>>> import config 
>>> regex = '([0-9]{1,3}[%])([{0}]?)'.format(config.SERIES) 
KeyError: '1,3' 

formato de estilo antiguo tiene sus propios problemas (debido al carácter '%'):

>>> import config 
>>> regex = '([0-9]{1,3}[%])([%s]?)' % (config.SERIES) 
unsupported format character ']' (0x5d) at index 14 

No he podido obtener caracteres de escape que funcionen dentro de la expresión regular. Alguna idea de como hacer esto?

Gracias,

Mike

Respuesta

10

Puede utilizar %% para insertar un signo de porcentaje usando el formato de estilo antiguo:

'([0-9]{1,3}[%%])([%s]?)' % (config.SERIES) 

Del mismo modo para el formato de nuevo estilo, el doble de los apoyos :

'([0-9]{{1,3}}[%])([{0}]?)'.format(config.SERIES) 
Cuestiones relacionadas