我想枚举正则表达式匹配的所有可能字符串。
我想要匹配的所有正则表达式都没有*
或+
,只有x*{5}
等同于x?x?x?x?x?
的内容。
所以给出任何正则表达式,如下所示:
[a-c]?cdr*{0,2}
我希望所有字符串都与表达式匹配。因此,图书馆或程序应输出如下内容:
cd, acd, bcd, ccd, cdr, acdr, bcdr, ccdr, cdrr, acdrr, bcdrr, ccdrr
只要它在linux中运行,我就不关心它实现的语言。
细化:如果将正则表达式转换为确定性有限自动机,则自动机必须可表示为有向非循环图。这就是为什么可能的输出字符串必须是可枚举的(而不是无限长的字符串)。
答案 0 :(得分:3)
我认为这个Java库可以帮助你使用http://code.google.com/p/xeger/,因为它是Java,它也可以在Linux上运行。
答案 1 :(得分:2)
以下是针对此问题的python解决方案:https://github.com/asciimoo/exrex
它也处理*和+运算符