2011-06-24 31 views
0

有誰知道一個算法來檢查兩個通配符表達式比另一個更通用嗎? 例如,我想比較比較兩個glob表達式

*/foo/foo.bar 

*.bar 

顯然第一個表達式被包含在第二位。我知道這對於正則表達式來說是不可能的(至少在沒有時間的情況下,至少我不記得這是複雜類非基本的),但是對於通配符表達式來說,這可能會少得多表現力。我試圖把一個簡單的python算法放在一起,但在特殊情況下它會變得非常討厭。 任何人有一個想法,如果有問題的算法?

UPDATE:

我不希望使用任何蠻力算法,因爲這將是不通用的,因爲性能原因,

問候,

傑拉德

+1

AFAIK * .bar將只在直接目錄中查找文件(至少在glob.glob中)。 –

+0

第二個不包含第一個,但'*/foo/*。bar'包含第一個,以及'*/*/*。bar'。 –

+0

好的,比讓我們從glob表達式改爲通配符表達式(也包含'?')更加通用。我試圖比較這些表達式的規則,並將它們合併/重新排列到一個規則集中。並且該組中規則的順序是相關的,例如,所有* .bar文件的行爲可能與僞裝目錄中的foo.bar文件的行爲不同 – Gerald

回答

0

你基本上需要找到一個匹配更一般的glob但不是更具體的字符串的字符串。只是隊長明顯...

可能通過替換*字符與0或更多的隨機符號。

+0

我認爲某些暴力行爲不適合性能方面的原因。 – Gerald