2016-09-18 20 views
1

在Python字,我試圖做正則表達式 - 替換有加或支架

text = re.sub(r'\b%s\b' % word, "replace_text", text) 

一些文字來代替一個字。使用re而不是僅僅使用text.replace替換,只有整個單詞匹配使用\b。問題出現時,字中有像+, (, [ etc這樣的字符。例如+91xxxxxxxx

正則表達式會將此+視爲一個或多個通配符並打破錯誤。 sre_constants.error: nothing to repeat(也是如此。

找到一個解決方案後,搜索了一下。有沒有辦法?

回答

2

只需使用re.escape(string)

word = re.escape(word) 
text = re.sub(r'\b{}\b'.format(word), "replace_text", text) 

它取代了所有重要的人物有着特殊含義的正則表達式模式與他們逃跑的形式(例如的替代\++)。


僅有旁註:用百分比格式化(%)字符已被棄用,通過串的.format()方法代替。