2016-09-18 6 views
1

В Python, я пытаюсь сделатьRegex - заменить слово, имеющее плюс или скобки

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

заменить слово с текстом. С помощью re вместо того, чтобы просто делать text.replace, заменить, только если целое слово соответствует \b. Проблема возникает, когда в слове есть такие символы, как +, (, [ etc. Например, +91xxxxxxxx.

Regex рассматривает этот + как подстановочный знак для одного или нескольких и прерывается с ошибкой. 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) 

Он заменяет все критические символы, имеющие специальное значение в регулярных выражений шаблонов с их побега форм (например, \+ вместо +).


Просто Sidenote: форматирование с процентами (%) характер устарела и была заменена .format() методом струн.

Смежные вопросы