我有N個字符串。 另外,還有K個正則表達式,我不知道。每個字符串或者匹配其中一個正則表達式,或者它是垃圾。集合中共有L個垃圾字符串。 K和L都是未知的。自動正則表達式生成器
我想推導出正則表達式。顯然,這個問題有無數的解決方案。我需要找到一個 「相當不錯的解決方案」,這
1)減少ķ
2)減少大號
3)最大化的正則表達式的 「特效藥」。我不知道這個質量的合適期限是什麼。例如,字符串「ab123」可以被描述爲/ ab \ d + /或/\w+.+/,但是第一個正則表達式更「特定」。
所有3個要求都需要作爲一個複合標準,並具有一定的合理權重。如果L = 0和K = 1(只有一個正則表達式,並且沒有垃圾),那麼我們可以爲這些字符串找到LCS(最長的公共子序列),並提出一個相應的正則表達式從那裏。但是,當我們有「噪音」(L> 0)時,這種方法不起作用。
任何想法(或指向現有的工作)非常感謝。
什麼是給出的信息?只是N弦?正則表達式已經決定了,但是隱藏起來了嗎?通過用「|」連接它們,您可以輕鬆生成與特定字符串集匹配的正則表達式。 – 2009-05-21 22:52:18
:)這將是作弊。我想我需要另一個標準來防止這種解決方案......我想,限制正則表達式的長度。 – 2009-05-21 23:00:06
您的條件#3可以更好地描述爲最小化不在給定的N個字符串集合中的匹配字符串的數量。考慮到你有3件事要儘量減少(儘管你可能很容易要求L = 0),你需要權衡哪些因素更重要。 – user57368 2009-05-21 23:31:08