列出正则表达式匹配的所有模式

3 投票
2 回答
514 浏览
提问于 2025-04-16 09:27

我想找一种方法,可以列出一个有限正则表达式(没有重复)的所有可能模式。有没有相关的资料可以参考?

2 个回答

0

一个基于Perl的Regexp::Genex的Haskell程序可以在Github上找到,也可以在Hackage上找到

根据作者的说法,这个程序的灵感来自于Regexp::Genex,但它“使用了一种随机游走的方法来处理字符类别,而不是列举所有可能性。”

3

虽然它可能不包括一些高级功能,并且有自己的一些限制,但Regexp::Genex看起来很接近你想要的东西。

还有这个PerlMonks的讨论帖,也很相关(它解释了为什么Regexp::Genex可能不适合你,以及一些你可以自己动手做的替代方案)。

另外,根据Jeffrey Friedl的《正则表达式大师》,你可以使用/g修饰符,结合(?{CODE})扩展和一个永远不会匹配的模式,像这样:

perl -E '$_ = 'Mastering Regular Expressions'; /(\p{L}*)(?{ say qq![$^N]! })(?!)/g;'

撰写回答