我正在寻找一种方法来列出有限正则表达式中的所有可能模式(不重复)。有资源吗
虽然它不会涵盖一些高级功能,并且有自己的其他注意事项,但 Regexp::Genex 似乎很接近您正在寻找的内容。
还有 PerlMonks 的这个线程,它足够相关(以及解释 Regexp::Genex 可能不适合你,以及一些自己动手的替代方案)。
否则,根据 Jeffrey Friedl 的掌握正则表达式,您可以使用 /g 修饰符,再加上 (?{CODE}) 扩展名和永远不会匹配的模式,ala:
perl -E '$_ = 'Mastering Regular Expressions'; /(\p{L}*)(?{ say qq![$^N]! })(?!)/g;'
基于 Perl 的 Haskell 程序
Regexp::Genex
可以在 Github 和 on Hackage 找到。
根据作者的说法,它受到 Regexp::Genex 的启发,但是“对字符类使用随机游走方法,而不是枚举所有可能性。”