Я знаю, что можно генерировать все перестановки из списка, с помощью шарика или Алгоритма:: Переставьте, например - но как Вы генерируете все возможные перестановки от регулярного выражения?
Я хочу сделать как:
@perms = permute( "/\s[A-Z][0-9][0-9]/" );
sub permute( $regex ) {
# code - put all permutations of above regex in a list
return @list;
}
См. раздел 6.5 (PDF) в Perl высшего порядка . Подумайте о покупке печатной книги: это произведение искусства.
Существует также Regexp :: Genex на CPAN .
Любая возможная реализация должна иметь разумную максимальную длину для сгенерированных строк.
Если где-либо в этом регулярном выражении есть +
или *
, возможные варианты могут быть без конца.
Regexp :: Genex считает это.