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