2010-03-22 44 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 2010-03-22 10:18:51

1

那裏沒有問題。你所看到的是字符串的repr()的輸出。由於repr被認爲可以或多或少地逆轉回原始對象,所以它將所有反斜槓加倍,並且避免repr末尾使用的引用類型。

相關問題