12/08/2018, 13:45

Regular Expression Reference

Tạm dừng series bài viết về module của Python ( PyMOTM ) để tránh nhàm chán, hôm nay mình xin chia sẻ về Regular Expression (hay còn gọi là biểu thức chính quy) trong lập trình. Bài viết này mình sẽ giới thiệu về Regular Expression, những tokens, modifiers mà RegEx hỗ trợ. Mình sẽ dịch nó (theo ...

Tạm dừng series bài viết về module của Python (PyMOTM) để tránh nhàm chán, hôm nay mình xin chia sẻ về Regular Expression (hay còn gọi là biểu thức chính quy) trong lập trình. Bài viết này mình sẽ giới thiệu về Regular Expression, những tokens, modifiers mà RegEx hỗ trợ. Mình sẽ dịch nó (theo những gì mình hiểu) kèm với những ví dụ đi cùng (nếu có thể) để bạn có thể hiểu hơn về RegEx nhé.

Regular Expression là gì?

Regular Expression (Biểu thức quy tắc - gọi tắt là RegEx) là một chuỗi ký tự đặc biệt được dùng làm mẫu (pattern) để phân tích, so sánh sự trùng khớp của một tập hợp các chuỗi cho trước nào đó. Vậy trong lập trình, RegEx dùng để làm gì? Chúng ta thường xuyên sử dụng nó để kiểm tra tính hợp lệ (validate) của form (dữ liệu do người dùng nhập và đưa lên server cho chúng ta xử lý). Hoặc nó cũng được sử dụng để tìm kiếm, thay thế, xử lý hay trích xuất dữ liệu từ một tập hợp các đoạn văn bản nào đó.

Vâng, vậy là chúng ta đã có cái nhìn cơ bản về RegEx rồi. Giờ chúng ta sẽ đi tìm hiểu các tokens và modifiers của RegEx nhé. Mình sẽ chia bài viết thành nhiều phần. Mỗi phần là một tập hợp các tokens được sử dụng để xử lý trong các trường hợp yêu cầu cụ thể.

RegEx tokens

General tokens

  • : Newline. Tìm kiếm ký tự xuống dòng (line-feed)
  • : Carriage return. Tìm kiếm ký tự điều khiển (control character) đưa con trỏ về đầu dòng (không bao gồm xuống dòng)
  • : Tab. Tìm kiếm ký tự tab ngang (tập hợp 1 số spacebar nhất định nào đó)
  • : Null. Tìm kiếm ký tự null. Một ký tự dùng để kết thúc chuỗi trong văn bản.

Anchors

  • G: Start of match. Trả về kết quả của lần tìm kiếm trước đó hoặc lần gặp đầu tiên của một chuỗi. Khi bạn sử dụng token này với modifier g (global).

Capture.PNG

  • ^: Start of string. Tìm kiếm ở vị trí bắt đầu của một chuỗi. Nếu bạn sử dụng modifier m (multipleline) thì nó sẽ tìm kiếm theo vị trí bắt đầu của chuỗi ở mỗi dòng.

Capture.PNG

  • $: End of string. Tìm kiếm ở vị trí cuối cùng của một chuỗi. Nếu bạn sử dụng modifier m thì nó sẽ tìm kiếm theo vị trí cuối cùng của chuỗi ở mỗi dòng.

Capture.PNG

  • A: Start of string. Cũng là tìm kiếm ở ví trí bắt đầu của mỗi chuỗi. Nhưng không giống với ^, A không bị ảnh hưởng bởi modifier m. Nếu bạn đã làm việc với RoR, khi viết RegEx và chạy Rubocop, nó sẽ khuyên bạn sử dụng A thay vì ^ đấy             </div>
            
            <div class=
0