Ứng dụng biểu thức regex bắt giá trị trong nội dung bình luận

Bài viết nói về phần mềm:

Phần mềm Get Comment Facebook


Đang hoạt động
Phiên bản: 1.1.4.1
Lần cuối cập nhật: 15/07/2022 11:43
Dùng thử 1 ngày
Bản quyền: CẤP 2
Phần mềm chạy hiện điều hành windows | Kiểu phần mềm Windows

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

Nội dung chính

 

Biểu thức Regex là gì?

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:

  • Kiểm tra tính hợp lệ của dữ liệu: như kiểm tra định dạng email.
  • Bắt một giá trị nào đó trong nội dung văn bản: như lấy SĐT trong văn bản.

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á,...

Biểu thức regex trong phần mềm livestream pro
Quy định biểu thức regex trong phần mềm Livestream Pro

Những quy ước cơ bản để viết biểu thức regex

Để 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.

  1. abc... : Chữ
  2. 123... : Số
  3. \d: Bất cứ số nào
  4. \D : Gì cũng được trừ số ra
  5. . : Bất cứ ký tự nào.
  6. [abc] : Chỉ có a, b hoặc c
  7. [^abc] : Không được có a, b, c
  8. [0-9] : Số từ 0 -> 9
  9. \w: Bất cứ ký tự chữ nào.
  10. \W: Gì cũng được trừ chữ ra.
  11. {m}: Lặp lại m lần.
  12. {m, n} : Lặp lại tối thiểu m lần, tối đa n lần.
  13. * : Có thể không có hoặc nhiều lần. (Không giới hạn số lần)
  14. + : Tối thiểu phải xuất hiện 1 lần.
  15. ? : Có xuất hiện cũng được, không cũng được.
  16. \s : Dấu cách (space).
  17. \S: Gì cũng được trừ dấu cách ra (space).
  18. ^..$: Quy định bắt đầu và kết thúc của một chuỗi.
  19. (...): Nhóm các ký tự lại.
  20. (a|b) : Một trong hai a hoặc b.
  21. \.: Là dấu chấm
  22. \\: Là dấu xuyệt \
  23. \/: là dấu xuyệt /
  24. $: kết thúc không còn ký tự nào nữa.

Để 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

Biểu thức regex trong phần mềm livestream pro
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.

Viết một số biểu thức regex cơ bản

Biểu thức regex bắt mã hàng

Để 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}

Biểu thức regex trong phần mềm livestream pro
Thử biểu thức bắt mã trên http://regexstorm.net/tester.

Biểu thức bắt Số điện thoại

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.

Biểu thức regex trong phần mềm livestream pro
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.

 

Biểu thức regex trong phần mềm livestream pro


Thử biểu thức bắt SĐT trên http://regexstorm.net/tester.

 

Biểu thức bắt Size

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.

Biểu thức regex trong phần mềm livestream pro
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 đầuphần đuôi cho biểu thức bắt size nữa.

Ví dụ đầu có thể là những giá trị sau:

  • Khoảng trắng \s
  • Chữ s (viết tắt size)
  • Chữ size
  • Dấu chấm .
  • Dấu gạch -
  • Dấu xuyệt /
  • Dấu xuyệt \

Ví dụ đuôi có thể là những giá trị sau:

  • Khoảng trắng \s
  • Dấu chấm .
  • Dấu gạch -
  • Dấu xuyệt /
  • Dấu xuyệt \
  • Không có gì cả

Biểu thức regex trong phần mềm livestream pro
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|\.|-|\/|\\|$).

Biểu thức regex trong phần mềm livestream pro
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.

Biểu thức bắt màu

Đố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.

Biểu thức regex trong phần mềm livestream pro
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.

Bắt giá

Người dùng thường comment giá như sau:

  • 150k
  • 1500k
  • 1.500k
  • 1,500k
  • 1m500
  • 1m500k
  • 150

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 regex trong phần mềm livestream pro
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á.

Biểu thức regex trong phần mềm livestream pro
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 regex trong phần mềm livestream pro
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:

  • m : ví dụ như 1m500k
  • Chấm . : phân cách phần ngàn 1.500k
  • Phẩy , : phân cách phần ngàn 1,500k.

Biểu thức regex trong phần mềm livestream pro
Thử biểu thức bắt đơn giá hàng triệu trên http://regexstorm.net/tester.

Bắt chiều cao, cân nặng

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.

Sử dụng Group lọc lại giá trị bắt được

Như đã nói ở trên ví dụ bạn bắt size với biểu thức: (s|size|\s|\.|-|\/|\\)(\d{2})(\s|\.|-|\/|\\|$).

Biểu thức regex trong phần mềm livestream pro
Các giá trị bắt được: 42/s42.

Như vậy làm sao để lọc 42 từ hai kết quả 42/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.

Biểu thức regex trong phần mềm livestream pro
Phân theo dấu ngoặc nhọn ta có 3 group. Group cần lấy là Group số 2.

Biểu thức regex trong phần mềm livestream pro
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.

Biểu thức regex trong phần mềm livestream pro
Xác định nhóm cần lấy trong các biểu thức Regex.

Cài đặt biểu thức regex trong phần mềm Livestream Pro

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.

Biểu thức regex trong phần mềm livestream pro
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.

Biểu thức regex trong phần mềm livestream pro
Sửa biểu thức regex.

Bạn cũng có thể thay đổi biểu thức regex ngay khi đang livestream.

Biểu thức regex trong phần mềm livestream pro
Cài đặt các biểu thức regex ngay khi đang livestream.

Tổng kết

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.

 

Nội dung chính

 

regex pattern regex bắt sđt regex bắt email group trong regex phân tích bình luận livestream phần mềm livestream pro regex bắt mã hàng regex bắt size regex bắt màu regex bắt số điện thoại phân tích bình luận tự động

Thời gian đăng bài viết Tác giả: quanly | Thời gian đăng bài viết Đăng lúc: | Thời gian sửa lần cuối bài viết Lần sửa cuối: 05/06/18 09:43 | Đếm số lượt xem Số lượt xem: 18,608

Hãy là người đầu tiên viết bình luận