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ăng | Perl | Python |
| 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 \Z | Có | Có |
| Shorthand \d \D \s \S | Có | Có |
| Named Capture | (?...), \k | (?P...), (?P=name) |
Khác biệt chính
| Đặc điểm | Perl | Python |
| 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 encoding | Bytes (ASCII) / UTF-8 với pragma | Unicode (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.