有没有一种工具可以接受正则表达式参数并输出有效组合?应该有创建一个与正则表达式匹配的字符串。
例如:
clear
clear
ls (-[al]{2}|-a -l|-l -a)
ls -al
,- 或者
ls -a -l
答案1
选择以下任一方法这个 Stack Overflow 问题,并使用 Python 运行它。例如:
$ python -c 'import rstr; print(rstr.xeger("ls (-[al]{2}|-a -l|-l -a)"))'
ls -a -l
您可能需要pip install
rstr 模块。
答案2
我不知道有任何工具可以满足您的需求 - 事实上,如果有的话我会感到惊讶 - 它应该如何处理包含通配符的表达式(例如.*
- 您希望它输出所有可能的字符吗?)
最接近的可能是某种正则表达式解析器这将为你生成一个解析树,然后你需要从根节点到叶子节点遍历它(如果你想到达每个可能的叶子节点,则需要根据需要进行备份)。类似于 perl 的YAPE::正则表达式例如模块——事实上,你可以基于YAPE::Regex::解释扩大:
$ 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 安装它。