Python Glossary English

все 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Сообщить о неточности