在Python中,我正在尝试
text = re.sub(r'\b%s\b' % word, "replace_text", text)
用一些文字替换一个单词。只有在使用re
匹配整个单词时,才使用text.replace
而非仅\b
进行替换。当单词中包含+, (, [ etc
等字符时出现问题。例如+91xxxxxxxx
。
正则表达式将此+
视为一个或多个通配符,并将其置为错误。 sre_constants.error: nothing to repeat
。同样是(
的情况。
在搜索了一下之后可以找到解决方法。有办法吗?
答案 0 :(得分:2)
只需使用re.escape(string)
:
word = re.escape(word)
text = re.sub(r'\b{}\b'.format(word), "replace_text", text)
它使用转义格式替换所有具有特殊含义的正则表达式的关键字符(例如\+
而不是+
)。
只是旁注:不推荐使用百分比(%
)字符进行格式设置,并使用.format()
字符串方法替换。