Nó phụ thuộc vào việc bạn có biểu hiện chính quy hay biểu thức chính quy: biểu thức chính là xấu, nhưng biểu thức chính quy là một điều hay và sẽ không bao giờ trở thành xấu xa đối với bạn.
Theo regrec, tôi có nghĩa là một biểu thức chính quy hiện đại: nghĩa là một biểu thức chính quy với các tính năng hiện đại bổ sung như phản hồi - ví dụ: biểu thức chính quy tương thích Perl. Điều này mạnh hơn một biểu thức chính quy cổ điển từ sách giáo khoa lý thuyết / ngôn ngữ chính thức, vì các biểu thức chính quy cổ điển không cho phép phản hồi, nhìn, nhìn, v.v.
nO(n)
Điều này không phụ thuộc vào việc thực hiện trình so khớp biểu thức chính quy. Nếu bạn có một triển khai trình so khớp ngây thơ hoặc kém, thì việc khớp có thể mất thời gian theo cấp số nhân; chắc chắn có các thuật toán với tài sản đó. Nhưng câu trả lời tốt nhất cho điều đó có lẽ là không thay đổi biểu thức chính quy; Có lẽ tốt hơn để chọn một công cụ đối sánh tốt hơn, nếu bạn lo ngại về các cuộc tấn công từ chối dịch vụ.
Trong so sánh, một số regexps hiện đại là không thể tránh khỏi cái ác. Nếu bạn có một biểu thức chính quy hiện đại, thì kết hợp có thể yêu cầu thời gian theo cấp số nhân. Cụ thể, biểu thức chính quy với phản hồi có thể nhận ra ngôn ngữ NP-hard. Do đó, theo các giả định hợp lý, tồn tại một lớp các biểu thức xấu xa trong đó việc kiểm tra một trận đấu mất thời gian theo cấp số nhân. Do đó, một số biểu thức hiện đại là không thể tránh khỏi sự xấu xa: không có cách nào khả thi để tìm một biểu thức chính quy tương đương mà sẽ không gây ra sự bùng nổ theo cấp số nhân trong thời gian chạy.
(Một lý thuyết tương đương như vậy có thể tồn tại và thậm chí có thể tìm thấy trên lý thuyết, nhưng theo các giả định hợp lý, việc tìm ra biểu thức chính quy tương đương sẽ mất thời gian theo cấp số nhân, điều này không khả thi trong thực tế. Nếu bạn có một quy trình có hệ thống để tìm ra biểu thức tương đương trong thời gian đa thức , sau đó bạn có thể giải quyết vấn đề NP-hard trong thời gian đa thức, chứng minh rằng P = NP. Sẽ không có ích gì khi tồn tại một regrec tương đương nếu không có cách nào thực sự tìm thấy nó trong suốt cuộc đời của bạn.)
Bối cảnh và nguồn: