Cách sử dụng biểu thức chính quy (Regex) trong Python
Nắm vững các biểu thức chính quy của Python bằng cách sử dụng mô-đun re tích hợp sẵn. Tìm hiểu cách so khớp chuỗi, tìm kiếm mẫu, tìm tất cả các lần xuất hiện và thay thế văn bản.
Tổng quan
Biểu thức chính quy, thường được gọi là biểu thức chính quy, là các mẫu mạnh mẽ được sử dụng để khớp, tìm kiếm và thao tác với chuỗi văn bản dựa trên các mẫu cụ thể. Regex được sử dụng rộng rãi để xác minh email, xác thực số điện thoại, quét web, phân tích nhật ký và các tác vụ văn bản tìm kiếm và thay thế. Python cung cấp đầy đủ khả năng biểu thức chính quy thông qua mô-đun `re` tích hợp sẵn.
Mô-đun `re` cung cấp một số chức năng chính tùy thuộc vào mục tiêu của bạn. Hàm `re.search(pattern, string)` quét một chuỗi và trả về một đối tượng khớp cho lần xuất hiện đầu tiên của mẫu. Hàm `re.match(pattern, string)` cũng tương tự nhưng chỉ tìm kiếm từ đầu chuỗi. Nếu bạn muốn truy xuất tất cả các phiên bản của một mẫu trong một khối văn bản, `re.findall(pattern, string)` trả về chúng dưới dạng danh sách các chuỗi.
Các mẫu biểu thức chính quy sử dụng các siêu ký tự đặc biệt như `\d` cho các chữ số, `\w` cho các ký tự chữ và số, `+` cho một hoặc nhiều lần xuất hiện và `*` cho 0 hoặc nhiều lần xuất hiện. Khi viết biểu thức chính quy bằng Python, thông lệ tiêu chuẩn là sử dụng các chuỗi ký tự thô (có tiền tố là `r`, chẳng hạn như `r"\d+"`) để ngăn Python coi dấu gạch chéo ngược là chuỗi thoát.
Đầu ra mã & thực thi
Tập lệnh này thể hiện việc xác thực cấu trúc định dạng, trích xuất mã thông báo số và thay thế các mẫu phù hợp bằng mô-đun re.
import re
# 1. Searching for a pattern in text
log_message = "ERROR: Connection timeout at 04:30:15 on port 8080"
pattern_port = r"port \d+"
match = re.search(pattern_port, log_message)
if match:
print("Found port pattern:", match.group())
# 2. Extracting all email addresses from a block of text
text = "Contact sales@pyrun.xyz or support@example.com for help."
pattern_email = r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}"
emails = re.findall(pattern_email, text)
print("Extracted emails:", emails)
# 3. Replacing patterns using re.sub
date_string = "2026/05/25"
# Replace slashes with dashes
clean_date = re.sub(r"/", "-", date_string)
print("Replaced Date:", clean_date)Found port pattern: port 8080
Extracted emails: ['sales@pyrun.xyz', 'support@example.com']
Replaced Date: 2026-05-25Triển khai từng bước
- Nhập mô-đun re tích hợp sẵn.
- Xác định các mẫu tìm kiếm biểu thức chính quy bằng cách sử dụng các chuỗi thô, như r"\d+" để tránh các vấn đề về chuỗi thoát.
- Sử dụng re.search() để tìm lần xuất hiện đầu tiên hoặc re.findall() để thu thập tất cả các chuỗi con phù hợp.
- Sử dụng re.sub(pattern, replacement, string) để thực hiện thay thế dựa trên mẫu bên trong văn bản.
Câu hỏi thường gặp
Lợi ích của việc sử dụng chuỗi thô (r"...") cho mẫu biểu thức chính quy là gì?
Chuỗi thô coi dấu gạch chéo ngược là ký tự chữ thay vì ký tự thoát. Ví dụ: r"\n" đại diện cho dấu gạch chéo ngược theo sau là "n", trong khi "\n" đại diện cho ký tự dòng mới.
Làm cách nào để kiểm tra xem kết hợp biểu thức chính quy có thành công hay không?
re.search() và re.match() trả về một đối tượng khớp nếu thành công hoặc Không có nếu không tìm thấy kết quả khớp nào. Bạn nên kiểm tra kết quả bằng cách sử dụng câu lệnh có điều kiện (ví dụ: nếu khớp :).
Chủ đề liên quan
Tìm hiểu cách thay thế các ký tự hoặc chuỗi con trong chuỗi Python. Nắm vững phương thức thay thế(), giới hạn số lượng và sử dụng dịch cho nhiều ký tự.
Cách tách một chuỗi trong PythonTìm hiểu cách tách một chuỗi thành một danh sách trong Python bằng phương thức Split(). Khám phá việc phân tách bằng dấu cách, dấu phẩy, dòng mới và giới hạn số lượng phân tách.
Tài nguyên Python được đề xuất
Mở rộng kiến thức của bạn với các hướng dẫn tương tác, bảng ghi chú và so sánh mã có liên quan.
Vòng lặp Python
Tìm hiểu cách sử dụng vòng lặp Python để lặp lại dữ liệu. Nắm vững các phương pháp hay nhất về vòng lặp for, while, ngắt, tiếp tục và lặp bằng các ví dụ tương tác.
Bảng cheat phương thức chuỗi Python
Hướng dẫn tham khảo đầy đủ về thao tác chuỗi Python. Làm chủ định dạng, tìm kiếm, phân tách, thay thế và kiểm tra thuộc tính chuỗi.
Python vs JavaScript: Ngôn ngữ lập trình nào tốt nhất?
So sánh toàn diện giữa Python và JavaScript. Khám phá sự khác biệt về cú pháp, hiệu suất, trường hợp sử dụng (phụ trợ so với giao diện người dùng) và các ví dụ về mã hóa.