あなたは正しいです、オンラインでもそのようなツールを見つけられませんでした、しかしあなたはグーグルからXegerを試すことができます
正規表現からランダムに一致する文字列を作成でき、コードを微調整することで、必要な処理を実行できる場合があります。ランダム一致の生成:
String regex = "[ab]{4,6}c";
Xeger generator = new Xeger(regex);
String result = generator.generate();
assert result.matches(regex);
Xegerコードは非常に単純で、5つのメソッドを含む2つのファイルで構成されて
います。dk.brics.automatonを使用して正規表現をオートマトンに変換し、オートマトン遷移を調べてすべてのノードでランダムに選択します。
主な機能は生成です:
private void generate(StringBuilder builder, State state) {
List<Transition> transitions = state.getSortedTransitions(true);
if (transitions.size() == 0) {
assert state.isAccept();
return;
}
int nroptions = state.isAccept() ? transitions.size() : transitions.size() - 1;
int option = XegerUtils.getRandomInt(0, nroptions, random);
if (state.isAccept() && option == 0) { // 0 is considered stop
return;
}
// Moving on to next transition
Transition transition = transitions.get(option - (state.isAccept() ? 1 : 0));
appendChoice(builder, transition);
generate(builder, transition.getDest());
}
可能なすべての一致を取得するように変更するには、すべての可能なノードで可能なすべての組み合わせを反復処理する必要があることがわかります(複数桁のカウンターのインクリメントなど)。ループを防ぐためにハッシュが必要ですが、そうではありません。コード化するのに5つ以上のセンコンドを取ります。
また、最初に正規表現が実際に完成していることを確認することをお勧めします。これには、このアクションを不可能にする*、+およびその他の記号がないことを確認します(これを再利用するための完全なツールにするため)...