Python Regex: So khớp mẫu với mô-đun re

Làm chủ biểu thức chính quy (Regex) trong Python. Tìm hiểu cách tìm kiếm, khớp, phân tách và thay thế dữ liệu chuỗi bằng thư viện re tích hợp sẵn.

Thử trong Trình chỉnh sửa

Tổng quan

Biểu thức chính quy (thường được rút ngắn thành biểu thức chính quy) là một ngôn ngữ nhỏ được sử dụng để tìm kiếm văn bản nâng cao, khớp chuỗi và thao tác. Thay vì kiểm tra các giá trị chuỗi đơn giản, biểu thức chính quy cho phép bạn xác định các mẫu phức tạp để tìm kiếm bên trong nội dung văn bản khổng lồ. Ví dụ: việc tìm tất cả địa chỉ email, số điện thoại hoặc URL trong tài liệu được thể hiện đơn giản bằng biểu thức chính quy nhưng lại cực kỳ phức tạp khi viết bằng các phương thức chuỗi thông thường.

Python cung cấp hỗ trợ tích hợp cho các biểu thức chính quy thông qua mô-đun `re`. Mô-đun này bao gồm các hàm quan trọng như `re.search()` để tìm kết quả khớp đầu tiên, `re.findall()` để truy xuất tất cả các chuỗi con phù hợp dưới dạng danh sách và `re.finditer()` để lặp lại các đối tượng khớp. Mỗi đối tượng so khớp cung cấp siêu dữ liệu, chẳng hạn như chỉ mục vị trí bắt đầu và kết thúc chính xác của chuỗi con phù hợp và chính văn bản phù hợp.

Các mẫu biểu thức chính quy sử dụng các siêu ký tự đặc biệt: `\d` khớp với bất kỳ chữ số nào, `\w` khớp với các ký tự chữ và số, `+` khớp với một hoặc nhiều lần lặp lại và dấu ngoặc `[...]` xác định bộ ký tự. Việc nhóm bằng dấu ngoặc đơn `(...)` cho phép bạn trích xuất các phần cụ thể của mẫu. Ngoài ra, `re.sub()` cho phép bạn tìm kiếm một mẫu và thay thế nó bằng một chuỗi mới. Mặc dù biểu thức chính quy có đường cong học tập khó khăn nhưng việc thành thạo nó sẽ cung cấp cho bạn một công cụ cực kỳ nhanh chóng và linh hoạt để xử lý văn bản.

Đầu ra mã & thực thi

Sử dụng mô-đun re để xác thực và trích xuất các thành phần của địa chỉ email.

import re

text = "Contact support at info@pyrun.xyz or developer@pyrun.xyz today."

# Pattern to match email addresses
email_pattern = r"([a-zA-Z0-9._%+-]+)@([a-zA-Z0-9.-]+\.[a-zA-Z]{2,})"

# Find all matches
emails = re.findall(email_pattern, text)
print("Emails found:")
for user, domain in emails:
    print(f"User: {user} | Domain: {domain}")

# Redacting emails using re.sub
redacted_text = re.sub(email_pattern, "[REDACTED]", text)
print(f"\nRedacted Text:\n{redacted_text}")
Đầu ra thiết bị đầu cuối
Emails found:
User: info | Domain: pyrun.xyz
User: developer | Domain: pyrun.xyz

Redacted Text:
Contact support at [REDACTED] or [REDACTED] today.

Triển khai từng bước

  • Xác thực định dạng đầu vào (email, điện thoại, mật khẩu)
  • Phân tích nhật ký truy cập máy chủ cho mã trạng thái
  • Quét thông tin từ HTML thô và báo cáo đánh dấu

Câu hỏi thường gặp

Tầm quan trọng của tiền tố 'r' trong các mẫu biểu thức chính quy là gì?

Nó biểu thị một 'chuỗi thô'. Chuỗi thô coi dấu gạch chéo ngược (\) là ký tự bằng chữ thay vì ký tự thoát, tránh xung đột cú pháp với ký tự đại diện biểu thức chính quy.

Sự khác biệt giữa re.match và re.search là gì?

re.match chỉ kiểm tra sự trùng khớp bắt đầu từ đầu chuỗi, trong khi re.search quét toàn bộ chuỗi để tìm sự trùng khớp.

Chủ đề liên quan

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.