2010-03-22 4 views
0

Я хочу использовать переменную в регулярное выражение, например:Используйте строку в качестве входных данных для re.compile

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) 

Проблема заключается в том, что питон добавляет дополнительный символ обратной косой черты для каждого символа обратной косой черты в моей регулярное выражение строки (ipython) и делает мое регулярное выражение неверным:

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

Любые советы о том, как я могу избежать этого?

ответ

2

Нет, он отображает только дополнительные обратные косые черты, так что строка может быть прочитана снова и иметь правильное количество обратных косых черт. Попробуйте

print regex 

и вы увидите разницу.

+0

Спасибо! Кажется, это работает нормально. Может быть, мне следует просто удалить этот пост, так как это не так важно? – user265978

1

Нет проблем. То, что вы видите, это вывод строки repr(). Поскольку репрез должен быть более или менее обратимым обратно в исходный объект, он удваивает все обратные косые черты, а также избегает типа цитаты, используемой в конце репрезентации.

Смежные вопросы