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

Khác biệt giữa re.match(), re.search() và re.findall() trong Python Regex

Ba phương thức cơ bản của module re với hành vi tìm kiếm khác nhau.

1. re.match() - Chỉ đầu chuỗi

  • Chỉ khớp nếu pattern match từ index 0.
  • Trả về Match object hoặc None.
import re
text = 'TP Tutorials Point TP'

print(re.match(r'TP', text).group())      # 'TP' - khớp đầu
print(re.match(r'Tutorials', text))       # None - không ở đầu

2. re.search() - Bất kỳ vị trí

  • Quét toàn bộ string, trả về match đầu tiên.
  • Trả về Match object hoặc None.

print(re.search(r'Tutorials', text).group())  # 'Tutorials'
print(re.search(r'TP', text).group())         # 'TP' (match đầu tiên)

3. re.findall() - Tất cả matches

  • Trả về list tất cả non-overlapping matches.
  • Hành vi phụ thuộc capturing groups (xem bài trước).

print(re.findall(r'TP', text))  # ['TP', 'TP']

Bảng so sánh tổng hợp

Phương thứcPhạm viTrả vềSố matchDùng cho
match()Đầu string (index 0)MatchObject/None0 hoặc 1Validate prefix, parse header
search()Toàn stringMatchObject/None0 hoặc 1 (đầu tiên)Tìm pattern bất kỳ đâu
findall()Toàn stringList[str/tuple]Tất cảExtract data, collect all
finditer()Toàn stringIterator[MatchObject]Tất cảCần vị trí, named groups, large input
fullmatch()Toàn string (3.4+)MatchObject/None0 hoặc 1Validate toàn bộ string

Mẹo nhớ

  • match = **M**atch at start.
  • search = **S**can everywhere.
  • findall = **F**ind **all**.
  • finditer = **F**ind **all** with **iter**ator.