Nếu bạn mất ngữ pháp grep regexp, không phải là egrep một, hoặc regexp ngữ pháp sed và sử dụng mà bạn nên sử dụng một tập hợp con an toàn trên nhiều nền tảng và công cụ.
Về điều duy nhất có thể cắn bạn là khi bạn chuyển đổi giữa việc triển khai regexp bằng cách sử dụng Tự động hóa hữu hạn (FSA) và những người sử dụng backtracking, ví dụ: triển khai định lượng sẽ khác nhau từ grep đến Perl.
Triển khai dựa trên FSA sẽ tìm thấy kết quả phù hợp dài nhất bắt đầu từ vị trí có thể đầu tiên. Backtracking những người sẽ tìm thấy trận đấu đầu tiên trái thiên vị, bắt đầu từ vị trí đầu tiên có thể. Nghĩa là, nó sẽ thử từng chi nhánh theo thứ tự trong mẫu cho đến khi tìm thấy một kết quả phù hợp.
Xem xét chuỗi "xyxyxyzz"
và mẫu "(xy)*(xyz)?"
. Các công cụ dựa trên FSA sẽ khớp với chuỗi con dài nhất có thể, "xyxyxyz"
. Các công cụ dựa trên theo dõi lại sẽ khớp với chuỗi con đầu tiên được phân loại bên trái, "xyxyxy"
.
Nguồn
2008-08-27 13:14:23
"tự động quyết định không hữu hạn". Máy tính của tôi chỉ có bộ nhớ hữu hạn; làm thế nào nó giữ một $ THING vô hạn? Tôi nghĩ bạn có thể có nghĩa là s/hữu hạn/xác định/g. –