0

C から PCRE を使用すると、正規表現 /^a{1,3}$/ と文字列 "aa" が与えられ、pcre_dfa_exec() は文字列が一致することを示す 1 を返します。

私が必要とするのは、文字列が正規表現を使い果たしていないこと、および文字列内に一致する可能性のあるさらに多くの文字 (つまり、「111」) の余地があることを判断できることです。

PCRE でこのための API が見つかりません。何か不足していますか?

4

1 に答える 1

1

その点については、pcreまたは他の正規表現マッチングエンジンを使用してそれを行うことはできません。regexp を考えてみましょうa+。正規表現が尽きる文字列はありません。ほとんどの正規表現には、一致する文字列が無数にあります。

ただし、問題を有限数の文字のみに一致する正規表現に制限すると、問題を解決できます。最初に正規表現を満たすすべての文字列を生成し、次に指定された文字列がそれらの中で最も長いものであることを確認します。

次のperl モジュールを使用できます: Regexp:Genexpまたは、こちらの Python ソリューションを使用します。

于 2013-09-21T17:32:26.840 に答える