Regular Expression (Regex) là một chuỗi các ký tự dùng để định nghĩa một Search Pattern. Ví dụ như Regex: [\d] được sử dụng để tìm tất cả các số tự nhiên trong khoảng [0..9]. Chúng ta thường sử dụng Regex để viết các chương trình tìm kiếm văn bản hoặc các ứng dụng xử lý từ, xử lý text,…Kết quả trả về của một hàm tìm kiếm sử dụng Regex là các đoạn text có pattern ứng với pattern mà ta cần tìm.

Bảng sau đây liệt kê một số Regex thông dụng và ta sẽ sử dụng các Regex này ở trong các bài tutorials như Làm sạch dữ liệu Twitter , Sử dụng Akka Streams ,…

Regex              Cách dùng
[ ] Trả về kết quả là một character(ký tự) có trong [ ]

Ví dụ: [abc] trả về kết quả là ‘a’ hoặc ‘b’ hoặc ‘c’ .

Tìm các từ trong một khoảng nhất định.

Ví dụ: [a-z] trả về kết quả là bất kỳ ký tự nào trong khoảng từ ‘a’ đến ‘z’ (có thể là ‘b’ hoặc ‘c’ hoặc ‘g’,…)

[^ ] Tìm các ký tự ngoại trừ các ký tự trong [ ]

Ví dụ: [^abc] trả về kết quả là bất kỳ ký tự nào không phải là ‘a’, ‘b’ và ‘c’ (có thể là ‘f’ hoặc ‘t’ hoặc ‘g’,…)

. Ứng với một ký tự bất kỳ

Ví dụ: a.f có thể là abf hoặc adf hoặc aaf,…

? Phần tử ngay trước ‘?’ có thể không xuất hiện hoặc chỉ xuất hiện 1 lần

Ví dụ: ab?c là ac hoặc abc

+ Phần tử ngay trước ‘+’ có thể xuất hiện 1 hoặc nhiều lần

Ví dụ: ab+c là abc hoặc abc, abbc,abbbc,…

* Phần tử ngay trước ‘*’ có thể không xuất hiện hoặc xuất hiện nhiều lần

Ví dụ: ab*c là ac hoặc abc hoăc abbc, abbbc,…

\ Được dùng để chỉ các ký tự đặc biệt

Ví dụ: \* trả về kết quả là ký tự ‘*’ hoặc \[ trả về kết quả là ký tự ‘[‘

Lưu ý \t là một tab, \n là một dòng mới

Ngoài ra có một số trường hợp đặc biệt sử dụng ‘\’ được liệt kê trong bảng sau:

Một ví dụ về việc sử dụng Regex trong thực tế là để trích xuất URL trong một đoạn văn bản với các bước như sau:

– Nếu coi URL bắt đầu bằng http, https, ftp hoặc ftps theo sau bởi ‘://”, ta có thể dùng Regex sau: (https?|ftps?)\:\/\/

– Tiếp theo ta coi tên miền là bất kỳ tên nào kết thúc bằng đuôi ‘.’+ tên miền. Ta dùng Regex sau: [\w]+\.[a-zA-Z]{2,5} (ta coi tên miền có từ 2-5 ký tự, như com(3 ký tự), vn(2 ký tự))

– URL có thể bao gồm đường dẫn (như facebook.com/question). Do đó ta dùng Regex sau: (\/\S*)?

Kết hợp các Regex trên, ta được Regex cuối cùng cho việc trích xuất URL như sau (các bạn có thể kiểm tra tính chính xác của Regex bằng việc sử dụng một số trang online như https://regex101.com):

Lưu ý: Regex trên chỉ là một ví dụ minh họa về việc trích xuất URL (đây không phải là một Regex đầy đủ để có thể trích xuất toàn bộ các dạng URL). Ngoài ra, đối với cùng một yêu cầu bài toán thì ta có thể có nhiều cách viết Regex khác nhau.

Tháng Mười Một 29, 2018
ITechSeeker