正则表达式 - 替换带加号或括号的单词

时间:2016-09-18 09:56:38

标签: python regex

在Python中,我正在尝试

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

用一些文字替换一个单词。只有在使用re匹配整个单词时,才使用text.replace而非仅\b进行替换。当单词中包含+, (, [ etc等字符时出现问题。例如+91xxxxxxxx

正则表达式将此+视为一个或多个通配符,并将其置为错误。 sre_constants.error: nothing to repeat。同样是(的情况。

在搜索了一下之后可以找到解决方法。有办法吗?

1 个答案:

答案 0 :(得分:2)

只需使用re.escape(string)

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

它使用转义格式替换所有具有特殊含义的正则表达式的关键字符(例如\+而不是+)。

只是旁注:不推荐使用百分比(%)字符进行格式设置,并使用.format()字符串方法替换。