Để sử dụng được Filter thành thạo, bạn cần nắm vững Regular Expression (RegEx). RegEx là những kí hiệu đặc biệt giúp diễn giải field trong filter hoặc quy chuẩn hóa những ký tự.
Chẳng hạn bài trước chúng ta tạo 1 Filter để exclude IP trong nội bộ công ty. Địa chỉ IP không được viết theo cách thông thường (63.212.171.150) mà sẽ được RegEx lại là 63\.212.\171\.150. Để hiểu nguyên tắc viết RegEx, bạn cần nắm vững những ký tự đặc biệt dưới đây:
- Dấu . : có thể thay thế bất cứ những ký tự nào.
Ví dụ: pro.bux có nghĩa là proabux hoặc probbux hoặc protbux....
- Dấu * : xóa hoặc thêm vào nhiều lần ký tự trước nó
Ví dụ: pro*bux có nghĩa là prbux hoặc probux hoặc proobux...
- Dấu + : giữ nguyên hoặc thêm vào nhiều lần ký tự trước nó.
Ví dụ: pro*bux có nghĩa là probux hoặc proobux hoặc prooobux..
- Dấu ? : giữ hoặc xóa kí tự trước nó.
Ví dụ: pro?bux có nghĩa là prbux hoặc probux
- Dấu | : hoặc
Ví dụ: a|b|c: hoặc a, hoặc b, hoặc c
- Dấu ^ : bắt đầu với ký tự
Ví dụ: ^probux nghĩa là những từ bắt đầu bằng probux như probuxteam, probuxref,...
- Dấu $ : kết thúc với ký tự
Ví dụ: probux$ nghĩa là những từ kết thúc với probux như ptcprobux, mmoprobux...
Kết hợp 2 dấu ^ và $ ta có quy tắc tìm tuyệt đối 1 từ nào đó, ví dụ ^ptconlinevn$ nghĩa là tìm những từ bắt đầu và kết thúc với ptconlievn, nói đơn giản là tìm chính xác từ ptconlinevn.
- Dấu (): dùng để tạo đối tượng
Ví dụ: (pro|neo)bux: probux hoặc neobux
Chú ý là () thường đi đôi với |
- Dấu []: tạo một list danh sách
Ví dụ: [abc]: a,b,c
- Dấu {a,b}: lặp lại đối tượng đứng trước nó ít nhất a lần, tối đa b lần.
Ví dụ: [0-9{1,2} cho kết quả từ 0 đến 99
- Dấu - : mở rộng 1 list
Ví dụ [A-E]: list các ký tự hoa từ A đến E
- Dấu \ : khi gặp các ký tự đặc biệt trên, nếu muốn chuyển thành ký tự bình thường ta sử dụng \
Ví dụ: địa chỉ blog ptconlinevn.blogspot.com được viết lại thành ptconlinevn\.blogspot\.com
Việc kết hợp sử dụng nhiều kí tự trên là điều bắt buộc nếu muốn diễn đạt trong Filter. Xem thử ví dụ dưới đây:
Việc lọc một khoảng IP trong nội bộ công ty: 63.212.171.150 - 63.22.171.254
Khoảng IP này sẽ được RegEx như thế nào?
- Chú ý những khoảng IP thường bắt đầu giống nhau nên ta sử dụng kí hiệu ^ và để mô tả chính xác ta kết hợp với $. Bước đầu ta được ^63\.212\.171(150-254)$
- Bước tiếp theo là cách diễn đạt 150 - 254. Để ý từ 150 đến 254 ta phân thành 3 khoảng chính [150-199], [200-249] và [250-254]
- [150-199] sẽ được viết thành 1([5-9][0-9]); [200-249] sẽ được viết thành 2([0-4][0-9]); [250-254] thành 2(5[0-4])
- Kết hợp lại [150-254]: 1([5-9][0-9])|2([0,4][0-9]|5[0-4])
- Hoàn chỉnh toàn bộ: ^63\.212\.171(1([5-9][0-9])|2([0-4][0-9]|5[0-4]))$
Để thành thạo RegEx, những bài sau tôi sẽ giới thiệu nhiều ví dụ khác. Các bạn có thể tham khảo trang web chính thức về RegEx tại đây: http://www.lunametrics.com/
Blogger Comment
Facebook Comment