2014-05-16 10 views
29

Tôi đã gặp phải các tình huống chỉ hỗ trợ các mẫu kiểu glob và hỗ trợ biểu thức chính quy đầy đủ, chẳng hạn như các phím redis. Tôi muốn biết sự khác biệt giữa hai người. Ngoài ra nó làm cho tôi tự hỏi, là thực hiện regex phù hợp với thuật toán khó hơn so với mô hình glob-phong cách mà một số phần mềm không hỗ trợ regex ở tất cả?Sự khác nhau giữa mẫu kiểu glob và cụm từ thông dụng là gì?

+1

Nó thường dựa trên việc sử dụng dự kiến, không thực hiện. Thông thường, toàn bộ sức mạnh và tính linh hoạt của cụm từ thông dụng là không cần thiết và việc so khớp mẫu đơn giản dễ hiểu hơn cho người dùng. – Barmar

+1

Ngoài ra, nếu bạn đang xử lý tên tệp, thật sự bất tiện khi phải thoát khỏi '.' mọi lúc khi sử dụng regexp. – Barmar

+1

Googling "glob vs regex" sẽ trả về một số tài nguyên, bạn có thử không? – tripleee

Trả lời

19

Ký tự đại diện glob truyền thống hỗ trợ tập hợp siêu ký tự rất hẹp - * là "bất kỳ thứ gì", ? là một ký tự đơn tùy ý; Vỏ Bourne cũng hỗ trợ [a-z123] cho một ký tự đơn lẻ trong một tập hợp các lựa chọn thay thế và [!x-z789] bất kỳ ký tự nào ngoại trừ những loại được liệt kê.

Regex rõ ràng là phong phú hơn, hỗ trợ lặp lại, và (trong ERE) luân phiên và số lượng cụ thể của sự lặp lại. Regex phong cách Perl tiếp tục mở rộng hình thức đến điểm mà nhiều cuốn sách đã được viết, và nhiều hơn nữa sẽ được.

Regex cơ bản không hoàn toàn khó khăn hơn nhiều so với ký tự đại diện glob, và những ngày này, một lập trình viên có thẩm quyền sẽ liên kết với một thư viện hiện có trong cả hai trường hợp.

Nhiều hệ thống đơn giản hơn không muốn gây gánh nặng cho người dùng với sự phức tạp trong việc học các biểu thức chính quy - ngay cả các ký tự đại diện cơ bản cũng là một thách thức để giải thích cho anh chàng bán hàng trung bình của bạn^W^W người không phải là toàn thời gian người dùng máy tính.

+0

Tôi mơ hồ nhớ lại những giai thoại của các công ty phần mềm lớn, những người nghĩ rằng ngay cả các nhà phát triển cũng không muốn hoặc hiểu regex (và sau đó bị hoang mang khi có nhu cầu rõ ràng và rõ ràng; vì vậy họ đưa nó vào phiên bản tiếp theo). – tripleee

0

Cụm từ thông dụng được sử dụng trong các lệnh/hàm cho khớp mẫu trong văn bản. Ví dụ trong tham số mẫu của grep, hoặc bằng ngôn ngữ lập trình.

Globbing được sử dụng bởi các vỏ để kết hợp tên tệp và thư mục bằng ký tự đại diện. Khả năng của globbing phụ thuộc vào vỏ. Bash, ví dụ, hỗ trợ kí tự như:

thông tin có thể tìm thêm here

Các vấn đề liên quan