Biểu thức chính quy (regex) là một công cụ tốt trong lập trình, cho phép mình tìm kiếm, so khớp và thao tác trên chuỗi văn bản một cách hiệu quả. Trong Python, regex được hỗ trợ thông qua mô-đun re
, cung cấp các hàm và cú pháp phong phú để làm việc với các mẫu chuỗi phức tạp. Để sử dụng regex một cách thành thạo, việc nắm vững các ký tự, định lượng, nhóm bắt, và các cờ là điều cần thiết. Tài liệu tham khảo nhanh này sẽ giúp bạn dễ dàng tra cứu và áp dụng các khái niệm regex trong Python, nâng cao khả năng xử lý chuỗi và giải quyết các bài toán lập trình một cách hiệu quả.
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.
Tài liệu tham khảo nhanh về Regex trong Python
Trang này cung cấp một tài liệu tham khảo nhanh về biểu thức chính quy (regex) trong Python mà bạn có thể sử dụng khi làm việc với regex.
Character sets
Mẫu |
Ý nghĩa |
\w |
Khớp một ký tự từ a-z, A-Z, 0-9, và gạch dưới (_) |
\d |
Khớp một chữ số từ 0-9 |
\s |
Khớp khoảng trắng bao gồm \t, \n, \r và khoảng trắng |
. |
Khớp bất kỳ ký tự nào ngoại trừ dòng mới |
\W |
Khớp bất kỳ ký tự nào ngoại trừ ký tự từ |
\D |
Khớp bất kỳ ký tự nào ngoại trừ chữ số |
\S |
Khớp bất kỳ ký tự nào ngoại trừ khoảng trắng |
Anchors trong Python
Mẫu |
Ý nghĩa |
^ |
Khớp tại đầu chuỗi |
$ |
Khớp tại cuối chuỗi |
\b |
Khớp tại vị trí biên từ |
\B |
Khớp tại vị trí không phải là biên từ |
Quantifiers trong Python
Định lượng (Greedy) |
Định lượng (Lazy) |
Ý nghĩa |
* |
*? |
Khớp phần tử trước nó 0 hoặc nhiều lần |
+ |
+? |
Khớp phần tử trước nó 1 hoặc nhiều lần |
? |
?? |
Khớp phần tử trước nó 0 hoặc 1 lần |
{n} |
{n}? |
Khớp phần tử trước nó chính xác n lần |
{n,} |
{n,}? |
Khớp phần tử trước nó ít nhất n lần |
{n,m} |
{n,m}? |
Khớp phần tử trước nó từ n đến m lần |
Sets & Ranges trong Python
Mẫu |
Ý nghĩa |
[XYZ] |
Khớp bất kỳ phần tử nào trong ba phần tử X, Y, và Z |
[X-Y] |
Khớp phạm vi từ X đến Y |
^[XYZ] |
Khớp bất kỳ phần tử nào ngoại trừ X, Y, và Z |
^[X-Y] |
Khớp bất kỳ phần tử nào ngoại trừ trong phạm vi X đến Y |
Nhóm Capturing trong Python
Mẫu |
Ý nghĩa |
(X) |
Bắt X trong nhóm |
(?P<name>X) |
Bắt X và gán tên cho nó |
\N |
Tham chiếu đến nhóm bắt số N |
\g<N> |
Tham chiếu đến nhóm bắt số N (cú pháp thay thế) |
Alternation trong Python
Mẫu |
Ý nghĩa |
X|Y |
Khớp X hoặc Y |
Look Around trong Python
Mẫu |
Ý nghĩa |
X(?=Y) |
Khớp X nhưng chỉ khi theo sau là Y |
X(?!Y) |
Khớp X nhưng chỉ khi không theo sau là Y |
(?<=Y)X |
Khớp X nếu trước nó có Y |
(?<!Y)X |
Khớp X nếu trước nó không có Y |
Hàm Regex trong Python
Bảng sau liệt kê các hàm regex từ mô-đun re
.
Hàm |
Mô tả |
findall() |
Trả về danh sách các kết quả khớp hoặc None |
finditer() |
Trả về một iterator cung cấp tất cả các kết quả khớp không chồng chéo |
search() |
Trả về kết quả khớp đầu tiên |
fullmatch() |
Trả về đối tượng Match nếu toàn bộ chuỗi khớp với mẫu |
match() |
Trả về kết quả khớp tại đầu chuỗi hoặc None |
sub() |
Trả về chuỗi với phần khớp được thay thế bằng chuỗi thay thế |
split() |
Chia chuỗi tại các vị trí khớp |
Flags Regex trong Python
Cờ |
Alias |
Cờ nội tuyến |
Ý nghĩa |
re.ASCII |
re.A |
?m |
Cờ này chỉ liên quan đến các mẫu byte. Nó khiến \w, \W, \b, \B, \d, \D, và \S chỉ khớp ASCII thay vì khớp toàn bộ Unicode. |
re.DEBUG |
N/A |
N/A |
Hiển thị thông tin debug của mẫu đã biên dịch. |
re.IGNORECASE |
re.I |
?i |
Khớp không phân biệt hoa thường. Có nghĩa là [A-Z] cũng sẽ khớp với chữ thường. |
re.LOCALE |
re.L |
?L |
Cờ này chỉ liên quan đến mẫu byte. Nó khiến \w, \W, \b, \B và khớp phân biệt hoa thường phụ thuộc vào ngôn ngữ hiện tại. Cờ này không tương thích với cờ re.ASCII. |
re.MULTILINE |
re.M |
?m |
Làm cho ^ khớp tại đầu chuỗi và đầu mỗi dòng và $ khớp tại cuối chuỗi và cuối mỗi dòng. |
re.DOTALL |
re.S |
?s |
Theo mặc định, dấu chấm (.) khớp bất kỳ ký tự nào ngoại trừ dòng mới. Cờ này làm cho dấu chấm (.) khớp tất cả ký tự bao gồm cả dòng mới. |
re.VERBOSE |
re.X |
?x |
Cờ này cho phép bạn tổ chức mẫu thành các phần logic trực quan và thêm chú thích. |
Kết bài
Biểu thức chính quy (regex) là một công cụ hữu ích và mạnh mẽ trong việc xử lý chuỗi văn bản trong Python. Việc nắm vững các ký tự, định lượng, nhóm bắt và các cờ trong regex sẽ giúp bạn giải quyết các bài toán về xử lý chuỗi một cách nhanh chóng và hiệu quả. Tài liệu tham khảo nhanh này cung cấp các kiến thức cần thiết và ví dụ minh họa cụ thể, giúp bạn dễ dàng tra cứu và áp dụng trong quá trình lập trình. Hãy sử dụng regex một cách linh hoạt và sáng tạo để nâng cao hiệu suất công việc của bạn.
Bài viết này được đăng tại [free tuts .net]