Regex pwd для регулярного выражения [duplicate]

Есть ли инструмент там, который будет принимать аргумент регулярного выражения и выплюнуть действительную комбинацию? Он должен сделать строку, которая соответствует регулярному выражению.

Например:

clear clear ls (-[al]{2}|-a -l|-l -a) ls -al или ls -a -l
2
задан 30 March 2017 в 10:01

4 ответа

Выберите любой из методов из этого вопроса о переполнении стека и используйте Python для его запуска. Например:

$ python -c 'import rstr; print(rstr.xeger("ls (-[al]{2}|-a -l|-l -a)"))' ls -a -l

Возможно, вам понадобится pip install модуль rstr.

2
ответ дан 17 July 2018 в 22:31

Я не знаю ни одного инструмента, который делает то, что вы хотите из коробки - на самом деле, я был бы удивлен, если бы было - что делать с выражениями, содержащими подстановочные знаки (например, .*, например - вы ожидали бы, что он выведет все возможные символы?)

Вероятно, самым близким будет какой-то депаратор регулярных выражений, который будет генерировать дерево синтаксического анализа для вас, что вам тогда понадобится пройти от корня до листа (при необходимости резервное копирование, если вы хотите достичь всех возможных листовых узлов). Что-то вроде модуля YAPE :: Regex perl, например, на самом деле вы можете использовать свое решение в расширении 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 \1: ---------------------------------------------------------------------- - '-' ---------------------------------------------------------------------- [al]{2} any character of: 'a', 'l' (2 times) ---------------------------------------------------------------------- | OR ---------------------------------------------------------------------- -a -l '-a -l' ---------------------------------------------------------------------- | OR ---------------------------------------------------------------------- -l -a '-l -a' ---------------------------------------------------------------------- ) end of \1 ---------------------------------------------------------------------- ) end of grouping ----------------------------------------------------------------------

(я не знаю, почему это

К сожалению, модуль, похоже, недоступен из репозиториев Ubuntu, но вы можете установить его через CPAN.

. d6]

0
ответ дан 17 July 2018 в 22:31

Выберите любой из методов из этого вопроса о переполнении стека и используйте Python для его запуска. Например:

$ python -c 'import rstr; print(rstr.xeger("ls (-[al]{2}|-a -l|-l -a)"))' ls -a -l

Возможно, вам понадобится pip install модуль rstr.

2
ответ дан 23 July 2018 в 23:09

Я не знаю ни одного инструмента, который делает то, что вы хотите из коробки - на самом деле, я был бы удивлен, если бы было - что делать с выражениями, содержащими подстановочные знаки (например, .*, например - вы ожидали бы, что он выведет все возможные символы?)

Вероятно, самым близким будет какой-то депаратор регулярных выражений, который будет генерировать дерево синтаксического анализа для вас, что вам тогда понадобится пройти от корня до листа (при необходимости резервное копирование, если вы хотите достичь всех возможных листовых узлов). Что-то вроде модуля YAPE :: Regex perl, например, на самом деле вы можете использовать свое решение в расширении 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 \1: ---------------------------------------------------------------------- - '-' ---------------------------------------------------------------------- [al]{2} any character of: 'a', 'l' (2 times) ---------------------------------------------------------------------- | OR ---------------------------------------------------------------------- -a -l '-a -l' ---------------------------------------------------------------------- | OR ---------------------------------------------------------------------- -l -a '-l -a' ---------------------------------------------------------------------- ) end of \1 ---------------------------------------------------------------------- ) end of grouping ----------------------------------------------------------------------

(я не знаю, почему это

К сожалению, модуль, похоже, недоступен из репозиториев Ubuntu, но вы можете установить его через CPAN.

. d6]

0
ответ дан 23 July 2018 в 23:09

Другие вопросы по тегам:

Похожие вопросы: