这不是一个简单的“所有可能组合”问题。
编辑:正则表达式只是一个固定长度的字符串,每个索引具有不同的字母和非字母数字组合...
给定一个固定长度的正则表达式,在数据库中计算和存储所有组合的最快方法是什么,包括保存到数据库的速度。从一开始,给定正则表达式到拥有每种组合的任何类型的数据库?
我所做的,成功但慢得离谱,只是创建一个长度为固定长度正则表达式的数组,每个元素包含该位置的每个可能字符,我用一些脚本生成了它。然后只是在阵列上做了一个循环感知,SQL Server 连接从头到尾打开,一次插入 10 种可能性。它非常慢,我们正在谈论一个 7/8 个字符的字符串,在任何给定位置最多有 36 种可能性。花了几天时间。
那么,我的问题是什么是技术、语言和算法的最佳组合来最快完成这个问题?
最佳答案
长度为 8 且由 36 个可能字符组成的可能字符串的数量:
36^8 = 2821109907456 = 2,8 trillion
以任何方式生成那么多字符串都将花费“相当长”的时间。让我们看看将它们插入数据库需要多长时间。假设一个非常好的数据库性能,我们可以进行 20000 次插入/秒。在这种情况下,总插入时间预计为:
2,8 * 10^12 / 20000 = 140 million seconds
140 * 10^6 / (60*60*24) = 1620 days
所以,我猜这回答了你的问题:1620 DAYS!
关于regex - 生成基于正则表达式的字符串的所有可能组合的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33924691/