通常,您有一个正则表达式和许多要处理的字符串。
我有相反的观点。我有一个字符串,我想找到匹配它的所有正则表达式。假设我有1000万个正则表达式。我不是要对字符串进行任何替换或重写,我只是想找到匹配的东西。
我想将它们存储在数据库中。一种粗略的方法是选择所有一千万行并迭代它们。对于每次迭代,应用正则表达式并以某种方式(我在这篇文章上有点不清楚)看看它是否匹配。也许我的正则表达式库有一个函数,我给它一个字符串和一个正则表达式,它告诉我它是否匹配。如果是,那么我打印出正则表达式。
这会很慢。我想知道我是否可以以某种方式将其移交给数据库,以便它只返回一个正则表达式的表格,该表格与给定字符串匹配,超出其1000万的表格。
我对使用的数据库不可知,我只是喜欢它很快。我不需要它快速成为“自定义汇编程序”,而只是“让数据库弄清楚它,所以我不必快速迭代1000万行”。
答案 0 :(得分:1)
我想知道我是否能以某种方式将其移交给数据库,以便它只返回一个与给定字符串匹配的正则表达式表
至少mysql可以这样做:
SELECT regex FROM table_with_regexes WHERE
regex REGEXP someString;
如果您告诉我们更多有关您实际问题的信息,也会有所帮助。我不认为你手工写了一千万个正则表达式,它们必须是自动生成的 - 告诉我们如何。
答案 1 :(得分:0)
在您的情况下,我将分三步处理:
构建一个sql查询,搜索匹配我的字符串的正则表达式 我将从一个用于构建sql查询的小型正则表集开始。
添加更多正则表达式并查看sql查询的执行方式 我会优化,必要时重写它。
我会简单地调整我的SQL查询以尽快回复 我会使用sql引擎,索引,并行执行等提示
将所有辛勤工作交给数据库是一种很好的方法,因为IMO是一种优雅而明确的方法。