2011-10-25 50 views
0

我試圖找到匹配和識別文件內不同許可證文本的最佳方法。這些是非常長的多行字符串(有時是2個字母大小的頁面),如果匹配,它們應該大部分是相同的,除了少數變量(名稱,日期,奇數新行,奇數空格)。 我的問題是,在甚至更長的字符串中匹配長字符串的最佳方式是什麼?是否正則表達式的使用是正確的(一個巨大的正則表達式,其中包含整個許可證文本和可變元素的幾個通配符)?還是有一個字符串搜索/匹配算法,將特別適應?與長字符串匹配的長字符串(大部分類似)

+1

您可以嘗試使用在兩個文本之間創建差異的算法。 – svick

回答

0

大多數正則表達式庫算法調整要快於對各種各樣的正則表達式的人一般都是寫的實踐中,有時會忽略罕見的情況下,您可以構建的正則表達式的原因他們採取可怕的大量的時間。如果你的模式不是可怕的特殊情況之一,那麼它的持續時間可能並不重要,因爲在實踐中,大多數不符合文本的地方可以通過檢查文字和圖案,而這些不匹配是時間的推移。

如果您想確保良好的性能,我會尋找必須存在於所有許可證形式中的固定文本(儘可能大)的單個字符串,在文件中搜索此內容,然後重新檢查以更復雜的方式查看是否真實匹配的少數情況。但是,如果你進行普通的正則表達式搜索,這很可能在實踐中會發生什麼。爲什麼不讓你的正則表達式在文件或其子集上鬆動,並看看需要多長時間?