1. 多正则匹配

要判断输入文本匹配了多个正则中的哪个(或哪些),不需要逐个判断, 扫描一遍就得到结果。

2. 正则表达式并交差:并交差是在编译时完成的,对匹配性能无任何影响

正则表达式的 连接重复 任意组合;有一些引擎支持的环视功能可以认为是 的一个受限子集,很多不严肃的论断认为环视功能无法用 DFA 实现,误导了很多人。

与 re2 比较

google re2 基于严格的自动机理论,性能上远远超越了其他引擎;其中 re2.set 是一个多正则引擎,性能相当好,但内存消耗很大。功能上,re2不支持,其他正则引擎(perl,pcre)则以环视(re2也不支持)的方式实现部分的功能(效率很低)。

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

最新版性能测试(仅功能1):

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

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

详细说明: 语法详解下载页面多正则编译器

实现并交差时,为了便于调试,我做了下面这个图形化页面,同时,这也是一个很好的演示页面, 在新窗口中打开该页面