Escolha um dos métodos da pergunta sobre estouro de pilha e use o Python para executá-lo. Por exemplo:
$ python -c 'import rstr; print(rstr.xeger("ls (-[al]{2}|-a -l|-l -a)"))'
ls -a -l
Você pode ter que pip install
do módulo rstr.
Existe uma ferramenta lá fora que aceita um argumento regex e cita uma combinação válida? Deve fazer uma string que corresponda à regex.
Por exemplo:
clear
clear
, ls (-[al]{2}|-a -l|-l -a)
Escolha um dos métodos da pergunta sobre estouro de pilha e use o Python para executá-lo. Por exemplo:
$ python -c 'import rstr; print(rstr.xeger("ls (-[al]{2}|-a -l|-l -a)"))'
ls -a -l
Você pode ter que pip install
do módulo rstr.
Não conheço nenhuma ferramenta que faça o que você deseja, de fato, ficaria surpreso se houvesse - o que fazer com expressões que contenham caracteres curinga (como .*
, por exemplo - você esperaria que ele emitisse todos os caracteres possíveis?)
Provavelmente o mais próximo seria algum tipo de expressão regular deparser que gerasse uma árvore de análise para você, que você precisaria atravessar de raiz para folha (fazendo o backup necessário se você quiser alcançar todos os nós de folhas possíveis). Algo como o módulo YAPE :: Regex do perl, por exemplo - na verdade, você pode ser capaz para basear sua solução na extensão YAPE :: Regex :: explain :
$ printf '(-[al]{2}|-a -l|-l -a)' |
perl -MYAPE::Regex::Explain -ne 'print YAPE::Regex::Explain->new($_)->explain'
The regular expression:
(?-imsx:(-[al]{2}|-a -l|-l -a))
matches as follows:
NODE EXPLANATION
----------------------------------------------------------------------
(?-imsx: group, but do not capture (case-sensitive)
(with ^ and $ matching normally) (with . not
matching \n) (matching whitespace and #
normally):
----------------------------------------------------------------------
( group and capture to :
----------------------------------------------------------------------
- '-'
----------------------------------------------------------------------
[al]{2} any character of: 'a', 'l' (2 times)
----------------------------------------------------------------------
| OR
----------------------------------------------------------------------
-a -l '-a -l'
----------------------------------------------------------------------
| OR
----------------------------------------------------------------------
-l -a '-l -a'
----------------------------------------------------------------------
) end of
----------------------------------------------------------------------
) end of grouping
----------------------------------------------------------------------
(não sei por que envolve a expressão em um grupo adicional de% não-captura (?:...)
).
Infelizmente, o módulo não parece estar disponível nos repositórios do Ubuntu, mas você deve ser capaz de instalá-lo via CPAN.