2013-05-24 18 views
7

Tôi muốn sử dụng cụm từ thông dụng đầu vào của người dùng và xác định xem biểu thức có khớp với bất kỳ chuỗi nào không, nghĩa là "giảm" thành .+ hoặc .*?Có thể xác định một cách đáng tin cậy nếu một cụm từ thông dụng nhất định sẽ khớp với bất kỳ chuỗi nào không?

Tôi nghi ngờ rằng kể từ this exists, câu hỏi của tôi sẽ giảm xuống vấn đề tạm dừng, nhưng tôi thực sự muốn sai về điều đó.

+0

Kleene Star hoặc '*' là vô hạn về mặt kỹ thuật ở khía cạnh lý thuyết nhưng mô-đun mà bạn đã đăng kiểm tra lên tới 32767 lần lặp lại với '*'. – squiguy

+0

Làm thế nào để kiểm tra nếu đầu vào không phải là trống/rỗng/null/zero chiều dài? Vì bạn không có tiêu chí khác, miễn là người dùng nhập _something_ nó phải phù hợp với yêu cầu của bạn. –

+1

@Burhan Khalid Bạn hiểu sai câu hỏi. Ông muốn kiểm tra nếu một regex tùy ý sẽ phù hợp với bất kỳ chuỗi nào hay không. – Patashu

Trả lời

0

Tôi không nghĩ những gì bạn muốn tương tự như sự cố tạm dừng do ngữ pháp của cụm từ thông dụng. Xem xét các bảng chữ cái và ngôn ngữ được công nhận bởi automaton của bạn là hữu hạn, bạn vẫn có thể sử dụng một thuật toán giả sẽ thử mọi thế giới ngôn ngữ của bạn và kiểm tra nếu biểu thức chính quy có thể nhận ra nó hay không.

Trong thực tế, phương pháp này có độ phức tạp khủng khiếp nhưng bạn không có trạng thái "không xác định" mà bạn sẽ gặp phải trong vấn đề Ngừng khi số lượng đầu vào là số đếm.

Tôi thực sự không biết liệu phiên bản tốt hơn của thuật toán giả này có tồn tại hay không, nhưng tôi hy vọng tôi đã trả lời câu hỏi của bạn về sự giống nhau với sự cố tạm dừng.

+0

Lý do tôi nghĩ rằng nó có thể biến thành vấn đề dừng lại là tôi đã đoán rằng sẽ không có cách nào tốt hơn để phân tích biểu thức chính quy hơn là sử dụng các kỹ thuật giống như kỹ thuật tôi đã liên kết. Nếu đúng như vậy, câu hỏi sẽ trở thành 'danh sách các chuỗi duy nhất vô hạn?' Kiểm tra các từ đã biết không đủ. –

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