实现了普通的正则引擎无法实现的两大功能

Posted Terark-CTO-雷鹏

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实现了普通的正则引擎无法实现的两大功能相关的知识,希望对你有一定的参考价值。

请关注我们的技术创业项目 Terark,领先的数据技术提供商


多正则匹配

要判断输入文本匹配了多个正则中的哪个,不需要逐个判断, 扫描一遍就得到结果(google re2.set 是一个半成品的多正则匹配)。

正则表达式并交差

正则表达式 “”、“”、“”、“连接”、“重复” 任意组合,这个功能 昨天刚完成,可以借此实现“环视”功能的一个超集。很多不严肃的论断认为环视无法用 DFA 实现,误导了很多人,包括我自己。这个功能 re2 不支持,其他正则引擎(perl,pcre)以“环视”的方式实现部分“交”和“差” 的功能。

与 re2 比较

google re2 在算法上基于严格的自动机理论,性能上远远超越了其他引擎。

我的引擎对于自动机理论的应用更加彻底,更加全面,代码上也仔细优化,从而:

性能上(仅功能1)

10万个正则,待匹配文本平均长度30字节,判断出匹配了哪个(或哪些),平均耗时5微秒,内存消耗350M

google re2.set 在相同的测试中,平均耗时35微秒,内存消耗2G

详细说明

实现并交差时,为了便于调试,我做了一个图形化页面,另一方面,这个页面也是一个很好的  演示页面

你如果对这个技术感兴趣: 下载页面用法文档

以上是关于实现了普通的正则引擎无法实现的两大功能的主要内容,如果未能解决你的问题,请参考以下文章

火山引擎 DataTester 3 大功能升级:聚焦敏捷智能与易用,帮助企业降本增效

大数据|Hadoop简介及两大功能三大核心组件(二)

使用JMeter实现可持续解决方案的大功能流程

Python--re模块

python中的正则表达式(re模块)

Python基础-re正则模块