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ức | Phạm vi | Trả về | Số match | Dùng cho |
|---|---|---|---|---|
match() | Đầu string (index 0) | MatchObject/None | 0 hoặc 1 | Validate prefix, parse header |
search() | Toàn string | MatchObject/None | 0 hoặc 1 (đầu tiên) | Tìm pattern bất kỳ đâu |
findall() | Toàn string | List[str/tuple] | Tất cả | Extract data, collect all |
finditer() | Toàn string | Iterator[MatchObject] | Tất cả | Cần vị trí, named groups, large input |
fullmatch() | Toàn string (3.4+) | MatchObject/None | 0 hoặc 1 | Validate 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.