Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Cách escape ký tự đặc biệt trong Python Regular Expression

Regex dùng backslash \ để escape metacharacters. Trong Python string, backslash cũng là escape character → xung đột. Giải pháp: Raw String r'...'.

Vấn đề: Double Escaping

  • Regex cần \\ để khớp 1 backslash literal.
  • Python string cần \\\\ để biểu diễn \\.
  • → Normal string: '\\\\\\\\' (4 backslashes) cho 1 literal backslash match.

Giải pháp: Raw String r'...'

Raw string không xử lý escape sequence, backslash giữ nguyên.


# Khớp literal backslash '\'
# Raw string: chỉ cần 2 backslashes
pattern = r'\\'
text = r'\'
re.match(pattern, text)  # Match!

# Normal string: cần 4 backslashes
pattern = '\\\\'
text = '\\'
re.match(pattern, text)  # Match!

So sánh

Mục tiêuRaw StringNormal String
Regex \d (digit)r'\d''\\d'
Regex \\ (literal \)r'\\\\''\\\\\\\\'
Regex \. (literal .)r'\.''\\.'
Regex \n (newline)r'\n' (2 chars: \ + n)'\n' (1 char: newline)

Best Practice

LUÔN dùng raw string r'...' cho regex pattern.


# TỐT
pattern = r'\d{3}-\d{4}'
pattern = r'[a-z]+'
pattern = r'\\server\share'

# TRÁNH
pattern = '\\d{3}-\\d{4}'
pattern = '[a-z]+'
pattern = '\\\\server\\\\share'

Khi nào KHÔNG dùng raw string

  • Cần interpolate variable chứa regex fragment (dùng f-string + re.escape).
  • Cần actual newline/tab trong pattern (hiếm).