有 1 个输入字符串,和 1 万个正则,如何找到哪个正则匹配

2022-01-13 14:51:34 +08:00
 timi

循环 1 万次是不是性能很 low ,有什么优化解吗

3098 次点击
所在节点    问与答
27 条回复
popvlovs
2022-01-13 18:50:41 +08:00
hyperscan
jianhua
2022-01-13 18:58:10 +08:00
包括:
1. 缓存匹配结果和类型。记录上次匹配结果和特征,引入特征查找算法。
2. 通过分析正则的含义,打标签(数字、字母、字符等匹配规则):
2.1 通过建立离线测试集,暴力测试正则的匹配含义
2.2 通过分析正则语法
基于正则的标签,优化原始数据特征提取和检索算法。最简单的,当你知道输入字符串是一个数字,那么应该排除掉所有字母、字符类的正则。
timi
2022-01-13 20:40:56 +08:00
@GeruzoniAnsasu 感觉路子很野但是又很有道理😂
timi
2022-01-13 20:45:21 +08:00
@murmur 其实不是路由,更接近于给某个 URL 贴个标签这样的,场景比较特殊不变透露但基本就是酱紫
paopjian
2022-01-14 09:53:26 +08:00
@GeruzoniAnsasu 第一次看到这么厉害的库,英语都没怎么读懂,好难
seanzxx
2022-01-14 11:44:52 +08:00
@GeruzoniAnsasu 我也是第一时间想到了 ragel ,以前拿这个来重写了一堆手写的正则匹配,真的很好用
yesterdaysun
2023-07-07 09:52:41 +08:00
合并正则+多线程

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/828016

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX