Используйте строку в качестве входных данных для re.compile - PullRequest
0 голосов
/ 22 марта 2010

Я хочу использовать переменную в регулярном выражении, например:

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 ]

2 голосов
/ 22 марта 2010

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

print regex

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

1 голос
/ 22 марта 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...