regex - 在大量字符串上测试 RegExp

标签 regex search match automaton

我有很多字符串(可能大约 50k-1M,都不会太长,可能 1-20 个字符)。现在我得到任何 RegExp,我需要返回所有匹配字符串的列表/迭代器。这必须尽可能快。

什么是好的索引结构来做到这一点?

目前,我正在根据字符串的字符构建一棵树。然后我将 RegExp 转换为确定性自动机。然后我计算该自动机与树的交集。这看起来是一种快速的方法,但我想知道其他可能性。

另一个挑战是支持 Unicode/UTF8,但我现在不想把这个问题集中在这一点上。

最佳答案

我刚找到 codesearch project似乎已经实现了这一点。解释在这里:Regular Expression Matching with a Trigram Index .

另一篇相关文章可能是这样的:Regular Expression Matching Can Be Simple And Fast

(我还没有真正深入研究它。我稍后会扩展这个答案。)

关于regex - 在大量字符串上测试 RegExp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23559919/

相关文章:

python - 正则表达式匹配最后的模式

regex - 无法理解捕获组和反向引用

javascript - 如何在javascript中计算字符串中的非空行

regex - Xmlstarlet select String+number for update

node.js - 如何使 Typescript/ts-node 接受后向断言(ECMAScript 2018 功能)?

mysql - 我应该如何设置这些表来进行搜索?

java - 在双调数组中搜索变成无限循环

php - 基于 Solr 的搜索引擎入门

vim - 无法计算Vim中的匹配数目

Javascript 正则表达式替换为不同的值