0

いくつかの正規表現があるとしましょう:

expr_1: "テストファイル"

expr_2: "テスト_*"

expr_3: "テスト*"

これらはすべて文字列「test_file」に一致します。どのルールが最も制限的なルールであるかをプログラムでどのように把握できますか (この場合は expr_1 )?

私が達成したいこと:

多くのファイルに適用される一般的なルールがありますが、たとえば .jpeg ファイルについては、特別な操作を行いたいと考えています。たとえば、「.jpeg」ファイルを選択するルールが「*」ルールよりも制限的であることをどのように判断できますか?

編集: Qt から QRegExp を使用していますが、これは何も変更しないはずです。

4

2 に答える 2

2

これは、言語理論に基づいてその問題を解決する正しい方法です。

他のすべての正規表現の「および」または「組み合わせ」である正規表現を計算します。すべての正規表現を DFA に変換してから、すべてのオートマトンの共通部分を作成できます。これにより、3 つの正規表現すべてで受け入れられるものだけを受け入れる新しい DFA が得られます。次に、オートマトンを最小化し、正規表現に変換することもできます。それを行うと、他のすべての正規表現をまとめたものと同じくらい制限的であり、それを行うための可能な限り短い正規表現である正規表現が得られます。

そのすべてを行う方法を説明する素晴らしい本: Introduction to Automata Theory, Languages, and Computation

于 2012-07-17T00:49:08.087 に答える
0

どの言語を使用していますか?

「制限性」の適切な尺度は、正規表現を介して潜在的な文字列の配列(この場合はファイル名の束)を実行し、各文字列がいくつ一致するかを確認することです。

于 2012-07-16T17:51:42.427 に答える