2 điểm bởi GN⁺ 2023-09-12 | 1 bình luận | Chia sẻ qua WhatsApp
  • Bài viết này thảo luận về cách tính hiệu và giao của hai biểu thức chính quy (regexes).
  • Tác giả trình bày quy trình bằng cách đưa ra các phương trình và kết quả như α < β = false, α = β = true, α > β = false, α & β = α ^ β = ∅, α - β = ∅.
  • Bài viết cũng bao gồm phần giới thiệu ngắn gọn về cú pháp biểu thức chính quy như sau:
    • '.' khớp với bất kỳ ký tự đơn nào
    • 'xy' là phép nối: khớp với x rồi đến y
    • 'x|y' là phép thay thế: khớp với x hoặc y
    • 'x*' là Kleene star: khớp với x từ 0 lần trở lên
    • '(xyz)' là nhóm: xem xyz như một mục đơn
    • '()' là biểu thức chính quy rỗng, khớp với chuỗi rỗng
    • 'x+' là Kleene plus: khớp với x từ 1 lần trở lên
    • 'x?' là tùy chọn: có thể khớp với x hoặc không
    • 'x{n}' là lũy thừa: nối x với chính nó n lần
    • 'x{m,n}' là lặp: nối x với chính nó từ m đến n lần
    • '[a-z0-9]' là nhóm: khớp với bất kỳ ký tự đơn nào trong nhóm
    • '[^a-z0-9]' là nhóm phủ định: khớp với bất kỳ ký tự đơn nào không thuộc nhóm
    • '\c' là escape: khớp với ký tự đặc biệt c
    • '\u001a' là Unicode escape: khớp với ký tự UTF-16 tương ứng
    • 'a, b, c' là mọi ký tự khác sẽ khớp với chính nó.
  • Bài viết này cũng đề cập đến các tính năng không được hỗ trợ như anchor, zero-width assertion, backreference, trích xuất nhóm con, tìm kiếm hoặc khớp một phần, và các cờ khác làm thay đổi hành vi.
  • Để biết thêm chi tiết, tác giả đề nghị tham khảo trang GitHub của 'antimirov'.
  • Tác giả của bài viết này là Eiríkr Åsheim, được biết đến trên Twitter và Mastodon với tên @d6.

1 bình luận

 
GN⁺ 2023-09-12
Ý kiến trên Hacker News
  • Bài viết này bàn về một công cụ tính hiệu và giao của hai biểu thức chính quy (regex).
  • Người dùng cho biết công cụ có thể bị treo khi cố xử lý các regex phức tạp, chẳng hạn như lọc các số chia hết cho 3.
  • Công cụ này có thể được dùng để tạo ra một hệ phân cấp lớp chuỗi hữu ích cho việc kiểm tra các kiểu chuỗi cụ thể như địa chỉ email hoặc URL.
  • Một người dùng đã tạo một bản demo web tương tự, cho thấy quá trình phân tích regex ở nhiều dạng khác nhau và cuối cùng xuất ra mã cho nhiều ngôn ngữ.
  • Biểu thức chính quy được ghi nhận vì khả năng gói gọn lý thuyết toán học phức tạp trong một giao diện thực tiễn tương tự đại số tuyến tính.
  • Một số người dùng ngạc nhiên trước độ phức tạp của các regex hợp và giao mà công cụ tạo ra, và cho rằng việc sinh ra biểu thức chính quy tối thiểu có thể còn là một thách thức lớn hơn.
  • Công cụ này cung cấp biểu diễn đồ họa của Deterministic Finite Automaton (DFA) cho các regex đã cho, và người dùng đánh giá điều này rất ấn tượng.
  • Một số người dùng nhận thấy công cụ gặp khó khăn khi xử lý các regex dành cho URL và địa chỉ email hợp lệ về mặt cú pháp.
  • Để cải thiện khả năng sử dụng trên thiết bị di động, đã có đề xuất tắt tính năng gợi ý tự động trong ô nhập regex.
  • Một người dùng chia sẻ kinh nghiệm áp dụng khái niệm giao regex để viết logic xác thực cho thiết lập "IP RegEx filter", qua đó giúp ngăn các phàn nàn của người dùng rằng bộ lọc không hoạt động.