Один из способов взглянуть на это состоит в том, что каждое регулярное выражение может (я полагаю) быть представлено как конечный автомат, в котором каждый переход между состояниями состоит из потребления одного или нескольких символов (или, возможно, нулевых символов также допустимо? Долгое времятак как я изучал это).
Итак, один из способов сделать это - подумать или преобразовать регулярное выражение в конечный автомат и переходить из состояния в состояние, выбирая переходы случайным образом, пока вы не нажмете действительныйконечное состояние.
Конечно, я понятия не имею, насколько выполнимым является этот метод в коде или существуют ли такие библиотеки.
http://lara.epfl.ch/dokuwiki/equivalence_of_finite_state_machine_and_regular_expression_languages