生成基于正则表达式的字符串的所有可能组合的列表

时间:2015-11-25 19:14:14

标签: regex database algorithm programming-languages combinatorics

这不是一个简单的“所有可能的组合”问题。

编辑:正则表达式只是一个固定长度的字符串,每个索引都有不同的字母和非字母数字组合......

给定固定长度的正则表达式,计算和存储数据库中所有组合的最快方法是什么,包括保存到数据库的速度。从一开始,给定正则表达式到每个组合的任何类型的数据库?

我所做的,成功但可笑的慢,只是创建一个数组固定长度正则表达式的长度,每个元素包含该位置的每个可能的字符,我用一些脚本生成它。然后在数组上做了一个循环,从头到尾打开一个SQL Server连接,一次插入10种可能性。它非常慢,我们说的是一串7/8字符,在任何给定的位置最多有36种可能性。花了几天时间。

所以,我的问题是这个问题是什么才能最快地完成这项技术,语言和算法的最佳组合?

1 个答案:

答案 0 :(得分:3)

长度为8且由36个可能字符组成的可能字符串数:

36^8 = 2821109907456 = 2,8 trillion

以任何方式生成许多字符串将需要相当多的"时间。让我们看看将它们插入数据库需要多长时间。假设DB性能非常好,我们可以采用20000次插入/秒。在这种情况下,预计总插入时间为:

2,8 * 10^12 / 20000 = 140 million seconds
140 * 10^6 / (60*60*24) = 1620 days

所以,我猜这回答了你的问题:1620 DAYS!