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

So sánh Regular Expressions trong Perl và Python

Perl và Python có regex engine rất tương đồng (cả hai đều base trên PCRE-like). Dưới là so sánh tính năng cốt lõi.

Tính năng chung (gần như giống hệt)

Tính năngPerlPython
Wildcard..
Quantifiers* + ? {m,n}* + ? {m,n}
Anchors^ $^ $
Character Class[abc], [a-z][abc], [a-z]
Alternation||
Backreference\1 \2\1 \2
Modifiers inline(?imsx)(?imsx)
Comment(?#...)(?#...)
Lookaround(?=) (?!) (?<=) (?(?=) (?!) (?<=) (?
Anchors \A \ZCóCó
Shorthand \d \D \s \SCóCó
Named Capture(?...), \k(?P...), (?P=name)

Khác biệt chính

Đặc điểmPerlPython
Named capture syntax(?...), \k(?P...), (?P=name)
Named backref trong pattern\k hoặc \g{name}(?P=name)
Named backref trong replacement$+{name}\g
Recursive regex(?R), (?1)Không hỗ trợ (cần module regex)
Code execution trong regex(?{code}), (??{code})Không hỗ trợ
Possessive quantifier*+ ++ ?+ {m,n}+Không hỗ trợ (cần regex)
Atomic group(?>...)Không hỗ trợ (cần regex)
Default encodingBytes (ASCII) / UTF-8 với pragmaUnicode (Python 3)

Kết luận

  • 90% use cases: Cú pháp gần như giống nhau.
  • Perl mạnh hơn: recursive, possessive, atomic, code execution.
  • Python 3: Unicode mặc định, named groups syntax riêng (?P).
  • Cần tính năng nâng cao → dùng module regex (PyPI) - backport Perl features.