2013-09-30 52 views
6

我想搜索一個字符串,可能包含括號或其他字符,可能不會被解釋爲普通字符串。蟒蛇重新找到可能包含括號的字符串

def findstring(string, text): 
    match = re.search(string, text) 

我不控制字符串,因爲它是從另一個模塊派生的。我的問題是,該字符串可能包含「xyz)」,這會產生一個錯誤,告訴我有不匹配的括號。

我已經嘗試過這個沒有成功

match = re.search(r'%s' % string, text) 
+0

你爲什麼使用正則表達式?如果該字符串應該是一個正則表達式,則應該將無效正則表達式的'xyz'視爲錯誤。如果它不是一個正則表達式,只需使用'text.find(string)'並完全跳過正則表達式模塊。 – tdelaney

+0

是的 - 真棒。 – JohnGalt

回答

10

您可以使用re.escape()逃脫字符串:

match = re.search(re.escape(string), text) 

從文檔:

返回字符串反斜槓所有非字母數字;如果你想匹配一個可能有正則表達式元字符的任意文字字符串,這很有用。