Обычно в нашей работе мы используем регулярные выражения в операциях capture или match .
Однако регулярные выражения можно использовать - по крайней мере, вручную - для создания законных предложений, соответствующих регулярному выражению. Конечно, некоторые регулярные выражения могут соответствовать бесконечно длинным предложениям, например, выражение .+
.
У меня есть проблема, которую можно решить с помощью алгоритма генерации предложений регулярного выражения.
В псевдокоде он будет работать примерно так:
re = generate("foo(bar|baz)?", max_match = 100); #Don't give me more than 100 results
assert re == ("foobar", "foobaz", "foo");
Какой алгоритм будет выполнять это для меня?