2011-06-07 121 views
0

語境:
我創建一個計劃,將整理並重新命名其命名例如我的媒體文件The.Office.s04e03.DIVX.WaREZKiNG.avi轉換爲有組織的文件夾結構,該文件夾結構將包含每個電視劇的文件夾列表,每個文件夾將具有季節文件夾列表,並且這些文件夾將包含媒體文件。最快如果有多個不同的字符串是第二個字符串的一個子檢查方法

問題: 我不確定什麼是讀取文件名和確定該名稱的哪部分是電視節目的最佳方法。對於例如在"The.Office.s04e03.DIVX.WaREZKiNG.avi",該辦公室是該系列的名稱。我決定列出所有電視節目,並檢查每個電視節目是否是文件名中的一個子字符串,但據我所知,這意味着我必須檢查每個文件的名稱與每個系列。

我的問題:如何確定一個字符串是否包含許多其他字符串之一?

由於

回答

0

的阿霍 - Corsasick算法[1]有效地解決了「這是否可能長字符串完全包含任何這些許多短字符串的」問題。

但是,我懷疑這不是你想要解決的問題。在我看來,你想要從一個可能有許多不同格式的字符串中提取可能的組件。我懷疑對於可能的提供商,視頻格式,季節/情節標記,或許是一個演出名稱數據庫等,有幾個不同的正則表達式真的是你想要的。然後,您可以獨立運行這些不同的「信息提取器」到您的文件名中以提取其結構。

[1] http://en.wikipedia.org/wiki/Aho%E2%80%93Corasick_string_matching_algorithm

0

這取決於一般的文件名的整體結構,例如是該系列的名稱總是第一個?如果是這樣,樹結構運作良好。在單詞之間是否存在標準標記(在您的示例中爲句號),如果您可以將這些字符串拆分並創建不區分大小寫的有趣單詞哈希表以提高性能。

但是,提取季節和劇集變得更加困難,一個簡單的解決方案就是實現一種算法來處理每個你發現的格式,儘管通過使用提示你可以創建一個有趣的解析器。 (可能有點過度)

相關問題