/
/
/
/
/
02. Cách lập một biểu thức chính quy Regex

02. Cách lập một biểu thức chính quy Regex

Để xây dựng một biểu thức chính quy, bạn cần sử dụng các siêu ký tự và quy luật cụ thể để mô tả mẫu chuỗi ký tự mà bạn muốn tìm kiếm, trích xuất hoặc thay thế. Dưới đây là một số bước cơ bản để xây dựng một biểu thức chính quy:

Bước 1: Xác định mẫu chuỗi

Đầu tiên, bạn cần xác định mẫu chuỗi ký tự mà bạn muốn tìm kiếm hoặc xử lý. Ví dụ, nếu bạn muốn tìm kiếm các chuỗi số điện thoại trong văn bản cần xác định mẫu của số điện thoại mà bạn muốn khớp – nghĩa là bằng “mắt thường” thì bạn làm thế nào để nhận ra chuỗi đấy. Bạn cần có cái nhìn tổng thể toàn bộ dữ liệu, để tìm ra quy luật chung nhất của chuỗi cần tìm.

Ví dụ: Ta có chuỗi abc123ggs0985359719xzy, thì bằng “mắt thường” ta sẽ lấy số điện thoại là chuỗi các số từ 0-9 và có độ dài 10 số.

Bước 2: Sử dụng các siêu ký tự và cú pháp của Regex

Sau khi xác định mẫu chuỗi, bạn sẽ sử dụng các siêu ký tự của Regex để tạo ra một biểu thức chính quy hoàn chỉnh. Nói đơn giản thì biểu thức chính quy giống như một ngoại ngữ mới của bạn, bạn phải chuyển từ ngôn ngữ của bạn sang ngôn ngữ của biểu thức chính quy mà thôi. Ở ví dụ trên, ta sẽ có biểu thức chính quy: \d{10}

Lưu ý rằng: Mỗi người sẽ có cách nhận định “quy luật” khác nhau, và cách dùng biểu thức chính quy khác nhau. Nên không có biểu thức chính quy duy nhất cho một tình huống cụ thể nào.

Bước 3: Kiểm tra và áp dụng biểu thức chính quy

Sau khi xây dựng biểu thức chính quy, bạn nên kiểm tra và sửa chữa nó nhằm đảm bảo rằng biểu thức hoạt động đúng với mẫu chuỗi mục tiêu. Bạn có thể sử dụng ChatGPT để kiểm tra lỗi, tối ưu công thức,… mà bạn viết.

📒Lời khuyên: Vui lòng đọc lướt qua ví dụ này, để bạn mường tượng cách chuyển từ “ngôn ngữ đời thường” sang “ngôn ngữ biểu thức chính quy”. Đừng cố hiểu ngay biểu thức chính quy trong phần này 😀, hãy đọc lướt qua, tìm hiểu từ các siêu ký tự của biểu thức chính quy ở bài tiếp theo và quay lại hiểu kỹ ví dụ phần này.

Ví dụ biểu thức chính quy của email ([email protected]; [email protected];…):

Xác định quy luật: Bạn thấy trong địa chỉ email bắt buộc phải có @ và có tối thiểu 1 dấu chấm trong tên miền. Các phần còn lại có thể là số hoặc chữ và 1 số ký tự đặc biệt.

=REGEXEXTRACT(A1;”[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}”)

Giải thích:

[a-zA-Z0-9._%+-]+ Khớp với một hoặc nhiều ký tự bao gồm các chữ cái (a-z, A-Z), số (0-9), dấu chấm (.), gạch dưới (_), dấu phần trăm (%), dấu cộng (+), và dấu trừ (-).

@ Ký tự “@” phải xuất hiện chính xác một lần.

[a-zA-Z0-9.-]+ Khớp với một hoặc nhiều ký tự bao gồm các chữ cái (a-z, A-Z), số (0-9), dấu chấm (.) và dấu gạch ngang (-).

\. Ký tự dấu chấm thực sự trong địa chỉ email. Trường hợp này ta dùng \ (ký tự thoát) để Google sheets hiểu rằng dấu chấm ở đây không phải là đại diện bất kỳ ký tự nào, mà là dấu chấm thực sự. 

[a-zA-Z]{2,}

Khớp với hai hoặc nhiều chữ cái (a-z, A-Z), đảm bảo rằng phần miền của email có ít nhất hai ký tự, phù hợp với phần mở rộng tên miền phổ biến như .com, .net, .org, .co, .uk,….

Tuy nhiên, đây là biểu thức chính quy chung của email, còn tùy thuộc vào dữ liệu cụ thể của bạn để viết biểu thức chính quy phù hợp nhất.

Chúng ta xem xét ví dụ sau:

Chúng ta nhận thấy, địa chỉ email ở bài trên là chuỗi ký tự không gồm dấu cách và dấu phẩy (bạn nhìn kỹ dòng số 4), ở giữa có ký tự @.

Nên ta chỉ cần “đi từ trái qua phải”, liên tục cụm từ không có dấu cách \S+ -> Rồi đến ký tự @ -> rồi liên tục cụm từ không có dấu cách và dấu phẩy [^\s,] là tìm ra địa chỉ email.

=INDEX(REGEXEXTRACT(B2:B6;”\S+@[^\s,]+”))

Trường hợp này có thể bạn sẽ thắc mắc 2 vế của @ đều là “liên tục cụm từ không có dấu cách”, tại sao 1 vế dùng \S+, 1 vế lại dùng [^\s,]+, mà không dùng luôn ở cả 2 vế. Bạn cần lưu ý rằng quy luật ở vế thứ 2 phải có thêm dấu phẩy, nên ta đưa vào trong ngoặc vuông [], sử dụng ký tự phủ định [^\s,] , ^\s = \S+

Và có thể bạn cũng thắc mắc rằng, trước khi thực hiện ví dụ này, phía trên cũng nói về biểu thức chính quy đó là [a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,} nhưng lại không dùng cho tình huống này? Cần nhấn mạnh lần nữa là: Không có biểu thức chính quy cho một tình huống nào, nó phải đặt trong từng tình huống, từng bối cảnh cụ thể, và bắt buộc bạn phải nhận ra “quy luật của nó”, từ đó viết quy luật đó thành biểu thức chính quy thông qua các “siêu ký tự”.

Chia sẻ: