我有以下正则表达式,它允许我使用re.split解析“20%+”,“20%”或“20% - 50%”等百分比。
'([0-9]{1,3}[%])([+-]?)'
我想使用字符串格式将序列标识符(即'+ - ')作为config.py中的参数传递。
SERIES = '+-'
我尝试过的两种方法都会产生错误。新式格式化会遇到以下错误(由于{m,n}用法):
>>> import config
>>> regex = '([0-9]{1,3}[%])([{0}]?)'.format(config.SERIES)
KeyError: '1,3'
旧式格式化有其自身的问题(由于'%'字符):
>>> import config
>>> regex = '([0-9]{1,3}[%])([%s]?)' % (config.SERIES)
unsupported format character ']' (0x5d) at index 14
我无法在正则表达式中使用转义字符。关于如何做到这一点的任何想法?
谢谢,
麦克
答案 0 :(得分:10)
您可以使用%%
使用旧式格式插入百分号:
'([0-9]{1,3}[%%])([%s]?)' % (config.SERIES)
同样对于新式格式,请加倍括号:
'([0-9]{{1,3}}[%])([{0}]?)'.format(config.SERIES)