如何从正则表达式中提取所有(有限)可能的字符串?

时间:2016-02-17 10:39:39

标签: regex pcre

是否有任何工具可以输出与正则表达式匹配的任何可能的字符串?

实际上,有很多工具可以将示例文本转换为正则表达式。当可能的字符串是有限的时候,我想做相反的事情。

此外,是否可以将正则表达式转换为一组正则表达式,每个正则表达式只匹配固定长度的模式?

示例:reg1= [A-Za-z][aeio]?[A-Za-z]可以转换为reg2= [A-Za-z][aeio][A-Za-z]reg3= [A-Za-z][A-Za-z]reg1匹配2-3个长度字符串,但reg2仅匹配2,而reg3仅匹配3个长度的字符串。

1 个答案:

答案 0 :(得分:1)

从正则表达式生成所有有效解决方案并不总是可行的,我认为您无法找到工具来实现它,因为它是一种利基用途(即使对于有限集)。

可以构建一些东西来生成整个(有限的)解决方案集。但它永远无法涵盖所有​​PCRE规范,我们将被迫做出选择:

  • 不关心点(.
  • 不关心负面角色类(\W\D ...)
  • 不关心未定义的量词(*+
  • ...

如此多的限制,以至于构建一个好工具所需的时间不值得。

无论如何,你可能会发现Xeger很有趣,因为这个库根据正则表达式(PCRE)生成随机有效字符串。