Tìm hiểu về xử lý chuỗi bằng Regex (phần I)

I. Regular Expression là gì: Regular Expression là các ký hiệu, biểu thức (theo quy ước) dùng để mô tả thay cho các chuỗi (string) khác. Có thể hiểu nôm na nó là một chuỗi mẫu để mô tả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định. Regex thường được dùng để tìm kiếm và thay thế trong xử lý chuỗi. Ở phần I này thì mình chỉ giới thiệu những quy tắc cơ bản của Regex kèm theo ví dụ minh họa, phần II sẽ giới thiệu về những quy tắc nâng cao. Ở bài này mình sử dụng trang web: http://regexr.com/ để tạo ví dụ minh họa.

II. Các quy tắc cơ bản của Regular Expression: 1. Khai báo chuỗi regex: Một pattern sẽ bắt đầu bằng dấu "/" và kết thúc cũng bằng dấu "/". Đằng sau cặp dấu này là 3 ký tự flag:

  • i: không phân biệt hoa thường
  • g: so khớp lặp lại với các ký tự khác trong toàn bộ văn bản
  • m: cho phép so khớp theo từng dòng đối với văn bản đa dòng và có sử dụng cặp "^$".

Ví dụ:

  • Pattern Regex: /Framgia/ Kết quả: Sẽ trả về chuỗi "Framgia" trùng khớp với pattern regex.
  • Pattern Regex: /Framgia/ig Kết quả: Sẽ trả về tất cả các chuỗi "Framgia" và "framgia" trùng khớp với pattern regex. Bởi vì chúng ta sử dụng flags i vì vậy pattern sẽ chấp nhận kí tự hoa hoặc thường trong việc tìm kiếm chuỗi. Flags g giúp chúng ta tìm kiếm trong toàn bộ văn bản các chuỗi trùng khớp với pattern.

2. Ký tự bắt đầu và kết thúc trong Regex: Dấu bắt đầu "^" chỉ các ký tự văn bản bắt đầu và dấu "" chỉ các ký tự kết thúc. Nếu xử dụng cặp “^” trong một biểu thức thì có nghĩa là ta đang muốn tìm một chuỗi khớp hoàn toàn với biểu thức.

Ví dụ:

  • Pattern Regex: /^Framgia/ Kết quả: Sẽ trả về chuỗi bắt đầu bằng "Framgia"
  • Pattern Regex: /company$/ Kết quả: Sẽ trả về chuỗi kết thúc bằng "company"

3. Xác định phạm vi của chuỗi bằng regex:

  • Regex kiểm tra một chữ cái in thường Pattern Regex: /[a-z]/g Kết quả: Sẽ trả về tất cả các ký tự in thường trong toàn bộ văn bản
  • Regex kiểm tra một chữ cái in hoa Pattern Regex: /[A-Z]/g Kết quả: Sẽ trả về tất cả các ký tự in hoa trong toàn bộ văn bản
  • Regex kiểm tra một ký tự là chữ số Pattern Regex: /[0-9]/g Kết quả: Sẽ trả về tất cả các ký tự số trong toàn bộ văn bản
  • Regex kiểm một chữ cái in hoa hoặc in thường Pattern Regex: /[a-zA-Z]/g Kết quả: Sẽ trả về tất cả các ký tự in hoa hoặc in thường trong toàn bộ văn bản
  • Regex kiểm tra một ký tự là số, chữ cái in hoa hoặc in thường Pattern Regex: /[a-zA-Z0-9]/g Kết quả: Sẽ trả về tất cả các ký tự in hoa hoặc in thường và ký tự số trong toàn bộ văn bản. Ở đây ta thấy trùng khớp với tất cả các ký tự trong văn bản (trừ những ký tự đặc biệt)
  • Regex kiểm tra ký tự có nằm trong dãy không Pattern Regex: /[FWA]/g Kết quả: Sẽ trả về tất cả các ký tự nằm trong phạm vi dấu ngoặc (ở đây là 3 ký tự F W A)

4. Xác định chiều dài chuỗi bằng regex:

  • Regex kiểm tra chuỗi có độ dài chính xác Pattern Regex: /[a-z]{5}/g Kết quả: Sẽ trả về tất cả các chuỗi ký tự in thường có chiều dài chuỗi là 5

III. Kết luận: Trong ứng dụng công nghệ thông tin thì các regex này thường được dùng để kiểm tra format của email, web link, số điện thoại... hoặc có thể sử dụng để giả những authenticate_token. Qua bài viết này mình đã giúp các bạn hình dung được về Regular Expression để có thể tìm kiếm và xử lý chuỗi. Nắm được nhưng quy tắc cơ bản này thì ta có thể tiếp tục với các quy tắc nâng cao ở phần tiếp theo.