我想知道一种从正则表达式中列出所有可能模式的方法。 例如,正则表达式:
(a(g|ag)|(a|b)g)|g
产量
ag (twice), aag, bg and g, correct?
是使用Thompson构造绘制正则表达式然后解析生成的NFA的最佳列表方法吗?
答案 0 :(得分:2)
您可以使用Thompson构造,然后浏览所有可能的路径,以使所有字符串与您的正则表达式匹配。
但是,由于正则表达式如a*
定义了无限语言,因此您应该有一些停止条件。 (例如,生成的字符串的长度等等)