Phần mềm lấy bình luận một bài viết bất kỳ trên Facebook.
Xem chi tiết
Regex là viết tắt Regular Expressions (dịch ra tiếng việt: biểu thức chính quy) là biểu thức gồm những ký tự trên bàn phím: chữ, số và một số ký tự khác.
Regex thường được ứng dụng trong 2 mục đích sau:
Ví dụ: 0[981735]([0-9]|\s|-|\.){8,12} là một biểu thức regex dùng để bắt SĐT trong nội dung nào đó.
Phần mềm Livestream Pro sử dụng biểu thức này để bắt các giá trị trong nội dung mà khách hàng bình luận. Nếu bạn viết biểu thức phù hợp sẽ giúp phần mềm tự động bắt được mã hàng, SĐT, size, màu, giá,...
Quy định biểu thức regex trong phần mềm Livestream Pro
Để viết được biểu thức regex thì bạn phải nắm các quy ước, có khá nhiều quy ước nhưng dưới đây iClick chỉ liệt kê những quy ước cơ bản nhưng đủ để bạn viết được những biểu thức cho phần mềm Livestream Pro.
Để viết biểu thức regex thì cách tốt nhất là bạn sử dụng công cụ trực quan - vừa viết vừa kiểm tra đúng sai. Bạn có thể kiểm tra trực tuyến trên website: http://regexstorm.net/tester
Thử nghiệm biểu thức regex trên http://regexstorm.net/tester.
Nội dung bên dưới sẽ hướng dẫn bạn cách viết một biểu thức regex. Bạn đừng e ngại vì nó phức tạp mà hãy đọc tỉ mỉ và thực hành, chúng tôi sẽ đảm bảo bạn sẽ thành thục cách biết biểu thức regex.
Để bắt chính xác mã hàng bạn cần đặt mã hàng theo quy tắc, quy tắc đặt mã hàng phải có đặc trưng riêng để không bị trùng lặp với các giá trị khác. Ví dụ bạn đặt mã hàng là số thì dễ bị nhầm với các giá trị là số khác như: SĐT, đơn giá, khối lượng, chiều cao, size... Vì vậy cần quy ước các đặt mã hàng riêng chẳng hạn như bắt đầu bằng một chữ cái và sau đó là những con số. Ví dụ đặt như M1, M2, M3, K1, X52, ... là mã hàng thì ít bị nhầm lẫn với giá trị khác và cũng dễ viết biểu thức regex cho mã hàng.
Bắt đầu bằng chữ cái thì cứ viết chữ đó ra, ví dụ như mã hàng bắt đầu là M thì biểu thức regex bắt đầu là m (quy ước 1), nếu bán nhiều mã có mã M có mã K thì biểu thức regex bắt đầu là (m|k) (quy ước 20) hoặc một cách viết khác [mk] (quy ước 6).
Đằng sau là những con số. Số thì được quy ước là \d (quy ước 3) hoặc [0-9] (quy ước 8), những con số thì có thể viết \d* hay \d+ (quy ước số 13, 14) hoặc giới hạn số chữ số chính xác thì ta áp dụng quy ước 12. Cụ thể mã M từ 1-100 thì tối thiếu có 1 chữ số và tối đa có 3 chữ số, vậy biểu thức số sẽ là \d{1,3}.
Ghép chữ bắt đầu và số đằng sau ở trên lại ta có biểu thức: (m|k)\d{1,3}, nhóm lại để dễ hiểu hơn (m|k)(\d){1,3} : biểu thức này sẽ bắt được mã hàng bắt đầu là M hoặc K và sau đó là một số có từ 1 tới 3 chữ số.
Nhưng trong thực tế khác hàng comment mã M1 có khi người ta viết liền: M1 nhưng cũng có khi viết hở ra M 1. Như vậy để nối chữ và số ta cần thêm quy ước khoảng trắng: \s? (quy ước 15, 16).
Biểu thức mới: (m|k)(\s)?(\d){1,3} hoặc ngắn gọn hơn [mk]\s?\d{1,3}
Thử biểu thức bắt mã trên http://regexstorm.net/tester.
Vì SĐT có cấu trúc chung cho tất cả mọi người, nên biểu thức này đã được iClick viết chuẩn và bạn có thể sử dụng mà không cần sửa đổi. Lưu ý biểu thức này chỉ bắt SĐT Việt Nam. Dưới đây chúng tôi xin trình bày lại cách viết để bạn có thể hiểu thêm về regex.
Đầu tiên SĐT thường bắt đầu bằng số 0 nên biểu thức sẽ bắt đầu là 0 (quy ước 2).
Tiếp theo sau số 0 sẽ là những số nào? Ta xem qua bảng đầu số điện thoại của các nhà mạng.
Danh sách các đầu số nhà mạng cả cũ và mới (15/09/2018).
Ta thấy sau số 0 có các số là 9, 8, 1, 7, 3, 5 nên viết tiếp chuỗi Regex như sau: 0[981735] (quy tắc 8).
SĐT hiện nay kể cả cũ và mới thì có từ 10 tới 11 số, vì vậy liền sau 2 số đầu tiên là một chuỗi số có chiều dài từ 8 tới 9 số. Viết tiếp biểu thức regex như sau: 0[981735]\d{8,9} (quy tắc 3 và 12).
Nhưng chừng này thì chưa đủ vì khi người ta đánh SĐT thì có thể người ta thêm cách khoảng giữa các số để dễ đọc như: 090.9826.364, 090 982 6364, 090-982-6364. Ngoài chuỗi số còn có thể có các ký tự chấm(.) hoặc gạch(-) hoặc khoảng trắng ( ). Có nhiều nhất là 3 ký tự khoảng cách này vì vậy chuỗi số có thể dài tối đa 9+3 = 12 ký tự. Như vậy đằng sau 2 số đầu thì một chuỗi có từ 8 tới 12 ký tự gồm: Số; chấm(.); gạch(-); khoảng trắng ( ). Viết tiếp biểu thức regex như sau: 0[981735](\d|\s|-|\.){8,12} (quy tắc 1, 16, 20, 21).
Như vậy ta có một biểu thức regex bắt số điện thoại hoàn chỉnh, biểu thức này có thể bắt cả SĐT cũ và mới, SĐT 10 số hay 11 số đều bắt được.
Thử biểu thức bắt SĐT trên http://regexstorm.net/tester.
Size thì có dạng chữ: S, M, L, XL, XXL, ... đối với dạng này thì viết khá đơn giản: (s|m|l|xl|xxl) nhưng nếu viết vậy thì s,m,l thì dễ bị trùng lặp.
Bắt nhầm size vì biểu thức quá đơn giản.
Để khắc phục tình trạng này ta có thể bổ sung thêm phần đầu và phần đuôi cho biểu thức bắt size nữa.
Ví dụ đầu có thể là những giá trị sau:
Ví dụ đuôi có thể là những giá trị sau:
Một số kiểu bình luận size.
Nối thêm đầu và đuôi ta có biểu thức: (s|size|\s|\.|-|\/|\\)(s|m|l|xl|xxl)(\s|\.|-|\/|\\|$), đối với size dạng số thì bạn có thể quy định \d{2}: size là số có 2 chữ số hoặc bạn bán size từ 41-45 thì có thể liệt kê ra như biểu thức sau (41|42|43|44|45).
Ta có biểu thức đầy đủ để bắt size dạng số như sau: (s|size|\s|\.|-|\/|\\)(\d{2})(\s|\.|-|\/|\\|$).
Thử biểu thức bắt size trên http://regexstorm.net/tester.
Như vậy biểu thức bắt được ngoài size ra còn có thể những ký tự không mong muốn, để loại những ký tự này ta sử dụng Group (xem bên dưới) để lấy đúng giá trị của Size.
Đối với màu thì bạn cần xác định những màu nào sẽ bán rồi dùng quy ước 20 để viết. Ví dụ lần livestream bán những màu sau: xanh lá, đỏ, tím, xanh dương, xám tro thì viết biểu thức bắt màu như sau: (xanh lá|đỏ|tím|xanh dương|xám tro|xanh la|tim|xanh duong|xam tro|do), lưu ý là trong biểu thức có viết luôn chữ không dấu.
Thử biểu thức bắt màu trên http://regexstorm.net/tester.
Để tránh bị trùng với nội dung khác bạn cũng có thể thêm phần đầu và đuôi cho biểu thức này.
Người dùng thường comment giá như sau:
Nên tùy theo mặt hàng bạn bán giá tầm khoảng bao nhiêu thì bạn chọn cách viết cho phù hợp. Ví dụ giá bán dưới 1 triệu đồng bạn có thể viết biểu thức như sau: \d{1,3}(\s)?k, bạn cũng có thể thêm nối đầu và đuôi để biểu thức đặt trưng hơn. Nhưng biểu thức này dễ nhầm với cân nặng - số kg.
Biểu thức bắt đơn giá nhầm với số kg.
Để tránh nhầm với số kg bạn cần quy định sau chữ k là ký tự gì cũng được nhưng tránh chữ g ra. Viết lại biểu thức như sau: \d{1,3}(\s)?k[^g]. Nhưng biểu thức này cũng có vấn đề khi cuối bình luận là đơn giá.
Không bắt được nếu đơn giá nằm ở cuối.
Như vậy sau chữ k của đơn giá hoặc là không có gì cả hoặc là không phải chữ g. Viết lại biểu thức bắt giá như sau: \d{1,3}(\s)?k([^g]|$) (quy ước 24).
Biểu thức bắt đơn giá chính xác.
Mở rộng cho biểu thức bắt đơn giá trên 1 triệu đồng, ta sửa lại phần đầu của biểu thức trên như sau: (\d|m|,|\.){1,6}(\s)?k([^g]|$). Vì phần đầu có thể có nhiều hơn 3 con số và có thể có thêm các ký tự sau:
Thử biểu thức bắt đơn giá hàng triệu trên http://regexstorm.net/tester.
Tương tự như bắt đơn giá bạn có thể viết biểu thức bắt cân nặng và chiều cao.
Như đã nói ở trên ví dụ bạn bắt size với biểu thức: (s|size|\s|\.|-|\/|\\)(\d{2})(\s|\.|-|\/|\\|$).
Các giá trị bắt được: 42/ và s42.
Như vậy làm sao để lọc 42 từ hai kết quả 42/ và s42 ? Regex có hỗ trợ bạn lọc ra nhóm (group) ký tự cần lấy bằng cách xác định theo cặp dấu ngoặc nhọn.
Phân theo dấu ngoặc nhọn ta có 3 group. Group cần lấy là Group số 2.
Xem Group trên http://regexstorm.net/tester.
Trong phần mềm Livestream Pro bạn đặt Group = 0 có nghĩa là lấy tất cả giá trị bắt được; đặt Group = n có nghĩa là lấy nhóm thứ n trong giá trị bắt được.
Xác định nhóm cần lấy trong các biểu thức Regex.
Trong phần mềm Livestream Pro thì mỗi Livestream sẽ có một bảng quy định các biểu thức Regex khác nhau. Khi bạn tạo livestream mới thì livestream này sẽ lấy các biểu thức regex của livestream liền trước đó.
Quy định regex được thực hiện ngay khi khai báo livestream mới.
Chỉnh sửa các biểu thức regex sau khi tạo mới Livestream.
Để chỉnh sửa biểu thức regex bạn cần chọn biểu thức cần sửa sau đó nhấn nút Sửa hoặc double-click vào biểu thức regex.
Sửa biểu thức regex.
Bạn cũng có thể thay đổi biểu thức regex ngay khi đang livestream.
Cài đặt các biểu thức regex ngay khi đang livestream.
Biểu thức regex sẽ giúp bạn rất nhiều trong việc phân tích tự động nội dung bình luận. Bạn cần học để am hiểu các quy ước cũng như cách viết biểu thức regex để tự viết cho trường hợp livestream của bạn. Xin đừng e ngại vì nó phức tạp và khá trừu tượng mà hãy học và thực hành để biết không quá khó để viết. Mỗi khi bạn đã viết đươc regex nó sẽ giúp bạn nhiều hơn trong các phần mềm khác không chỉ Livestream Pro.
Cần hỗ trợ thêm về cách viết biểu thức regex vui lòng liên hệ chúng tôi để được hỗ trợ.
Chúc bạn thành công.
Tác giả:
quanly
|
Đăng lúc: 05/06/18 09:43 |
Lần sửa cuối: 05/06/18 09:43 |
Số lượt xem: 21,098