わかりました。コメントで、入力セット内の文字列の1つに等しいか、特定のレベルの「変動」内の文字列の1つとのみ異なるすべての文字列を照合することを明確にしました。'バリエーション'を正確に定義しなかったので、レーベンシュタイン距離を使用します。
文字列sと整数を指定すると、次のように、レーベンシュタイン距離がその文字列以下nのすべての文字列に正確に一致する正規表現を作成できます。n
最初に、距離が。以下のすべての文字列を一緒に一致させる単純なregexenのリストを指定sして返す関数を記述します。ここで、「単純な正規表現」とは、リテラル文字とワイルドカードのみを含む正規表現を意味します。nns
そのn=0関数の場合は、を返します[s]。それ以外の場合は、のリストを計算してn-1から、その中の各アイテムを調べます。アイテムrごと、および位置ごとiに0 <= i < length(r)、次のregexenがリストに追加されます。
- 位置
.に追加された正規表現。ri
iのth文字rが削除された正規表現。
iのth文字が。rに置き換えられた正規表現.。
次に、特定の文字列セットの正規表現との特定の値nを計算するために、各文字列のリストを計算してから、orすべての正規表現を1つの大きな正規表現にまとめます。
これはすぐに非常に大きなregexenにつながることに注意してください。