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

Cách tối ưu hiệu năng biểu thức chính quy (regex) trong Python?


Biểu thức chính quy (regex) giúp lọc mẫu tin trong xử lý văn bản dễ dàng. Một ưu điểm lớn: regex có thể được compile (biên dịch) trước và tái sử dụng để tăng tốc độ. Vì regex không thay đổi giữa các lần gọi hàm, ta nên compile một lần và dùng bản đã compile. Tuy nhiên việc này tốn chi phí khởi tạo, cần cân bằng để tối ưu.

Ngoài ra, dùng toán tử in trong regex (ví dụ: 'abc' in text trước khi match) có thể tăng tốc độ đáng kể cho các trường hợp đơn giản.

Regex khá khó debug, maintain và có vấn đề hiệu năng. Những vấn đề này cần được giải quyết để tối ưu:

  • Compile một lần, dùng nhiều lần: Dùng re.compile(pattern).
  • Tránh backtracking quá mức: Dùng non-greedy quantifier (*?, +?), atomic groups, hoặc possessive quantifiers (nếu engine hỗ trợ).
  • Sử dụng anchor (^, $) đúng chỗ để giảm không gian tìm kiếm.
  • Pre-filter bằng in hoặc str.startswith() trước khi áp dụng regex phức tạp.
  • Cache pattern với functools.lru_cache nếu pattern được tạo động.