【发布时间】:2011-11-14 11:21:40
【问题描述】:
我想枚举一个正则表达式匹配的所有可能的字符串。
我想匹配的所有正则表达式都没有* 或+,只有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 中运行,我不关心它是用什么语言实现的。
细化:如果将正则表达式转换为确定性有限自动机,则自动机必须可表示为有向无环图。这就是为什么可能的输出字符串必须是可枚举的(不是无限长的字符串)。
【问题讨论】:
-
@Mithun:链接的问题与这个完全无关?
-
你的问题没有意义。您的“正则表达式”最多包含 3 个字符,除非我弄错了,但您的结果有超过三个字符?
-
@Alex 好的,现在我明白你的意思了。所以我认为 [abc]?cdr{0,2} 是你需要的。
标签: regex