我有很多字符串(可能大约50k-1M,所有字符串都不长,可能是1-20个字符)。现在我得到任何RegExp,我需要返回所有匹配字符串的列表/迭代器。这必须尽可能快。
有什么好的指数结构呢?
目前,我正在为字符串的字符构建一棵树。我将RegExp转换为确定性自动机。然后我计算该自动机与树的交集。这看起来很快,但我想知道其他可能性。
额外的挑战是支持Unicode / UTF8,但我现在不想把这个问题集中在那个问题上。
答案 0 :(得分:0)
我刚刚找到codesearch project,似乎已经实现了这一点。解释如下:Regular Expression Matching with a Trigram Index。
另一篇相关文章可能是:Regular Expression Matching Can Be Simple And Fast
(我还没有进一步调查过。我稍后会延长这个答案。)