все Python 3reфункция
re.escape()
экранирование
Экранирует спецсимволы в строке, чтобы искать её буквально, — нужно, когда шаблон собирается из пользовательского ввода.
Синтаксис
re.escape(pattern) -> str
Нужна ровно там, где часть паттерна — это данные: имя файла, слово из пользовательского ввода, разделитель из переменной. Без экранирования точка, плюс или скобки внезапно станут метасимволами, а незакрытая скобка — ошибкой re.error. На строку замены в re.sub() это не распространяется: там свои правила, и пришедшие из данных \1 или \g<name> всё равно сработают как ссылки на группы — надёжнее передать вместо repl функцию.
Примеры
import re
print(re.escape('1+1=2')) # → 1\+1=2
print(re.escape('file.txt')) # → file\.txt
print(re.escape('file.name (v2).txt')) # → file\.name\ \(v2\)\.txt
print(re.escape('a|b|c')) # → a\|b\|c
print(re.findall(re.escape('price (USD)'), 'price (USD) today')) # → ['price (USD)']
print(re.compile(re.escape('c++')).search('i know c++') is not None) # → True
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности