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

Cách hoạt động của Backslash (\) trong Python Regular Expressions

Backslash \ là metacharacter quan trọng nhất trong regex: dùng để escape metacharacters và tạo special sequences (như \d, \w, \s...).

Vấn đề: Backslash trong Python String vs Regex

  • Python string: \\ = một backslash thực.
  • Regex engine: \\ = escape backslash, \d = digit.
  • → Cần \\\\ trong normal string để ra \\ cho regex.

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

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


# Hai cách viết tương đương:
re.match(r'\\', r'\\')      # Raw string: pattern=\\, input=\\
re.match('\\\\', '\\\\')    # Normal string: pattern=\\, input=\\

# Khớp literal backslash
re.match(r'\\\\', r'\\')    # Pattern=\\, input=\\ -> Match!

Ví dụ minh họa

import re

# Không raw string: \d trong string thành 'd' (escape d vô nghĩa)
print(re.search('\d', r'\d'))   # None - pattern 'd' không khớp '\d'

# Raw string: \d giữ nguyên -> regex sequence digit
print(re.search(r'\d', r'\d'))  # Match object - pattern \d khớp '\d' (không, \d khớp digit)

# Sửa: khớp literal '\d'
print(re.search(r'\\d', r'\d'))     # Match! Pattern \\d = literal \d
print(re.search('\\\\d', '\\d'))    # Tương đương normal string

Kết quả


None
<_sre.SRE_Match object...>
<_sre.SRE_Match object...>

Bảng Special Sequences (cần backslash)

SequenceÝ nghĩa
\dDigit [0-9]
\DNon-digit [^0-9]
\wWord char [a-zA-Z0-9_]
\WNon-word [^a-zA-Z0-9_]
\sWhitespace [ \t\n\r\f\v]
\SNon-whitespace
\bWord boundary
\BNon-word boundary
\AStart of string
\ZEnd of string
\\Literal backslash

Best Practice

Luôn dùng raw string r'...' cho regex pattern. Tránh nhầm lẫn escape Python vs escape Regex.