2013-10-12 58 views
0

我想創建一個正則表達式來替換存儲在word在目標字符串該字符串的所有文字實例:我怎麼不能用python中的變量創建這個正則表達式?

regex = re.compile("\\b" + word + "\\b") 

Python來「養錯誤,V#無效的表達式」抱怨。爲什麼會有錯誤?我一定要逃避我的反斜槓,對吧?

+1

'word'是什麼內容? – nemo

+0

're.compile(「\\ b」+「lalala」+「\\ b」)'適合我。當你打印文字時你會得到什麼? –

+3

如果是用戶提供的,您可能需要使用're.escape(word)'。這將保護你的代碼不會崩潰,如果它包含無效的正則表達式模式的東西。如果你想允許'word'包含正則表達式的東西,你可能只需要捕捉異常並給用戶提供適當的反饋。 – Blckknght

回答

4

由於re.compile不知道其輸入的一部分來自於用戶,你應該使用re.escape做出特殊字符(如括號)word匹配這些字符,而不是採取對他們的特殊含義正則表達式中,像這樣的: ```

import re 
word = 'Par(ens' 
regex = re.compile("\\b" + re.escape(word) + "\\b") 
相關問題