Как сгенерировать строку из регулярного выражения на .NET?

Для генерации строк из регулярного выражения использую RexEngine из AutomataDotNet.
Но он не всегда генерирует валидные строки (проверяю результат им же и OOTB Regex).
Какой библиотекой посоветуете пользоваться для этой задачи?

Сейчас код выглядит так, но хочется избавиться от проверки генерации на валидность:
public static IEnumerable<string> GenerateValidStrings(string pattern, int count = 10, RegexOptions options = RegexOptions.None)
{
    var rex = new Microsoft.Automata.Rex.RexEngine(Microsoft.Automata.BitWidth.BV16);
    var dotnetRegex = new Regex(pattern, options);
            
    var sfa = rex.CreateFromRegexes(options, pattern);
    var old = new HashSet<string>();

    while (true)
    {
        string member = rex.GenerateMember(sfa);
        if (!dotnetRegex.IsMatch(member)) continue;

        int tryCount = Math.Min(100 + old.Count, 200);
                
        if (old.Contains(member))
        {
            tryCount--;
                    
            if (tryCount == 0)
            {
                throw new InvalidOperationException("can't generate new unique strings");
            }
            continue;
        }

        old.Add(member);
        yield return member;

        if (old.Count == count)
        {
            break;
        }
    }
}
  • Вопрос задан
  • 108 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы