使用string作为re.compile的输入

时间:2010-03-22 09:55:03

标签: python regex

我想在正则表达式中使用变量,如下所示:

variables = ['variableA','variableB']

for i in range(len(variables)):
    regex = r"'('+variables[i]+')[:|=|\(](-?\d+(?:\.\d+)?)(?:\))?'"
    pattern_variable = re.compile(regex)
    match = re.search(pattern_variable, line)

问题是python为我的正则表达式字符串(ipython)中的每个反斜杠字符添加了一个额外的反斜杠字符,并使我的正则表达式无效:

In [76]: regex
Out[76]: "'('+variables[i]+')[:|=|\\(](-?\\d+(?:\\.\\d+)?)(?:\\))?'"

关于如何避免这种情况的任何提示?

2 个答案:

答案 0 :(得分:2)

不,它只显示额外的反斜杠,以便可以再次读入字符串并具有正确数量的反斜杠。尝试

print regex

你会发现差异。

答案 1 :(得分:1)

那里没有问题。您所看到的是字符串repr()的输出。由于repr应该或多或少地可逆回原始对象,因此它会使所有反斜杠加倍,并且可以转义在repr末尾使用的引用类型。