查找正则表达式的所有匹配字符串(不带+和*运算符)

时间:2011-11-14 11:21:41

标签: regex

我想枚举正则表达式匹配的所有可能字符串。 我想要匹配的所有正则表达式都没有*+,只有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中运行,我就不关心它实现的语言。

细化:如果将正则表达式转换为确定性有限自动机,则自动机必须可表示为有向非循环图。这就是为什么可能的输出字符串必须是可枚举的(而不是无限长的字符串)。

2 个答案:

答案 0 :(得分:3)

我认为这个Java库可以帮助你使用http://code.google.com/p/xeger/,因为它是Java,它也可以在Linux上运行。

答案 1 :(得分:2)

以下是针对此问题的python解决方案:https://github.com/asciimoo/exrex

它也处理*和+运算符