Метод Python re.escape()
re.escape()— это Pythonreфункция модуля, используемая дляэкранирования специальных символов регулярных выражений.
Он возьмёт все специальные символы регулярного выражения в строке (например,.、*、?и т. д.) и экранирует их, заставляя обрабатывать как обычные символы.
Определения слов: escapeозначает «спасаться» и «убегать».
Базовый синтаксис и параметры
Формат синтаксиса
re.escape(string)
Описание параметра
- строка: Строка, которую нужно экранировать
Описание функций
- Возвращаемое значение: Возвращает экранированную строку.
Примеры
Пример 1: Базовое использование
Пример
import re
# Экранирование строки, содержащей специальные символы
text = "example.com?foo=1"
result = re.escape(text)
print("Original:", text)
print("Escaped:", result)
# Экранирование строки, содержащей специальные символы
text = "example.com?foo=1"
result = re.escape(text)
print("Original:", text)
print("Escaped:", result)
Ожидаемый вывод:
原始: example.com?foo=1 转义后: example\.com\?foo\=1
Пример 2: Использование в поиске
Пример
import re
# Поиск строки, содержащей точку (литеральный поиск, не регулярное выражение)
text = "File path: C:\\Users\\test.txt"
# Экранирование обратной косой черты и точки
pattern = re.escape("C:\\Users\\test.txt")
result = re.search(pattern, text)
if result:
print("Найдено:", result.group())
# Поиск строки, содержащей точку (литеральный поиск, не регулярное выражение)
text = "File path: C:\\Users\\test.txt"
# Экранирование обратной косой черты и точки
pattern = re.escape("C:\\Users\\test.txt")
result = re.search(pattern, text)
if result:
print("Найдено:", result.group())
Ожидаемый вывод:
找到: C:\Users\test.txt
Пример 3: Сравнение экранирования и неэкранирования
Пример
import re
text = "цена: $100"
# Без экранирования - $ является специальным символом в регулярном выражении (конец строки)
result1 = re.findall(r'$100', text)
# После экранирования - $ рассматривается как обычный символ
result2 = re.findall(re.escape('$100'), text)
print("Без экранирования:", result1)
print("С экранированием:", result2)
text = "цена: $100"
# Без экранирования - $ является специальным символом в регулярном выражении (конец строки)
result1 = re.findall(r'$100', text)
# После экранирования - $ рассматривается как обычный символ
result2 = re.findall(re.escape('$100'), text)
print("Без экранирования:", result1)
print("С экранированием:", result2)
Ожидаемый вывод:
不转义: [] 转义后: ['$100']
Пример 4: Обработка пользовательского ввода
Пример
import re
# Специальные символы, которые может ввести пользователь
user_input = "python*"
text = "python* — это здорово"
# Экранируйте пользовательский ввод перед поиском
pattern = re.escape(user_input)
result = re.search(pattern, text)
print("Результат поиска:", result.group() if result else "Не найдено")
# Специальные символы, которые может ввести пользователь
user_input = "python*"
text = "python* — это здорово"
# Экранируйте пользовательский ввод перед поиском
pattern = re.escape(user_input)
result = re.search(pattern, text)
print("Результат поиска:", result.group() if result else "Не найдено")
Ожидаемый вывод:
查找结果: python*
Другие расширения
Модуль re в Python