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

Khác biệt giữa re.search và re.match trong Python

Cả hai đều tìm pattern trong string, nhưng phạm vi tìm kiếm khác nhau.

HàmVị trí tìm kiếmTrả về
re.match(pattern, string)Chỉ đầu chuỗiMatch object hoặc None
re.search(pattern, string)Toàn bộ chuỗi (từ trái sang)Match object hoặc None

Ví dụ

import re
s = 'TP Tutorials Point TP'

# match: chỉ đầu chuỗi
re.match(r'TP', s).group()      # 'TP' ✓
re.match(r'Tutorials', s)       # None ✗

# search: quét toàn chuỗi
re.search(r'Tutorials', s).group()  # 'Tutorials' ✓
re.search(r'TP', s).group()         # 'TP' (match đầu tiên)

Khi nào dùng cái nào?

  • match: validate format (email, phone, date...) — pattern phải khớp từ đầu.
  • search: tìm pattern bất kỳ đâu trong chuỗi.
  • findall: tìm tất cả match (không chỉ cái đầu).