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

标签 regex database algorithm programming-languages combinatorics

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

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

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

我所做的,成功但慢得离谱,只是创建一个长度为固定长度正则表达式的数组,每个元素包含该位置的每个可能字符,我用一些脚本生成了它。然后只是在阵列上做了一个循环感知,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/

相关文章:

php - 将图像标签存储在 sql 数据库中会带来安全风险吗?

c# - 在 .NET 中计算列表最小值/最大值的最短代码

python - 加速矩阵计算(循环子数组)[numpy]

android - 如何在Android应用程序中创建登录页面?

c++ - a+b+c<=n的解数

asp.net - 文本框的正则表达式最大和最小长度字符

python - 删除两个句号之间的数字

mysql - 用于逗号分隔值的 REGEX mysql

java - 如何在 Freemarker 中仅从字符串中获取字母?

java - 如何将规则存储在数据库中并在 java 文件中访问它们而不是在 Drools 中使用 .drl 文件?