2011-06-24 13 views
0

2つのワイルドカード式のどちらが他よりも一般的であるかを確認するアルゴリズムを知っている人はいますか? 例えば私は、明らかに最初の式は第二に含まれる2つのglob式を比較する

*.bar 

*/foo/foo.bar 

を比較したいです。私は正規表現では不可能であることを知っています(少なくとも、あなたが時間の浪費をしていないなら、これは複雑ではないクラスのクラスであることを覚えている限り)。しかし、はるかに少ないワイルドカード表現表現力豊かな。私は単純なpythonアルゴリズムをまとめようとしましたが、特別な場合には非常に厄介です。 その問題のアルゴリズムがあれば誰でも考えがありますか?

UPDATE:

これは、一般的には動作しませんので、私はあなたが

よろしく、

ジェラルド

+1

AFAIK * .barは、直接glob内のファイル(glob.globのatleast)のみを検索します。 –

+0

2番目のものには最初のものは含まれていませんが、 '*/*/*。bar'だけでなく、'/foo/*。bar'も最初のものを含みます。 –

+0

OK、グロブ表現からワイルドカード表現に(「?」を含む)言い換えて、より一般的なものにしましょう。私は、ルールをその中のそのような式と比較し、それらをまとめて単一のルールセットに並べ替えることを試みています。このセットのルールの順序は、関連性があります。すべての* .barファイルの動作は、sepcifiedディレクトリのfoo.barファイルの動作と異なる場合があります。 – Gerald

答えて

0

ため、パフォーマンス上の理由により、任意のブルートフォースアルゴリズムを使用したくありません基本的にはより一般的なグロブにマッチするものの、より具体的なものにはマッチしない文字列を見つける必要があります。ちょうどキャプテンの明白さ...

おそらく*文字を0個以上のランダムな記号で置き換えます。

+0

私はいくつかの種類のブルートフォースがパフォーマンス上の理由で動作しないと思います。 – Gerald

関連する問題