[轮子]一个全新开发的正则引擎
发表于 : 2012-05-08 18:43
后来重构了整个项目,代码量还是1100行左右(去掉debug部分),新版兼容c89。
新的特性如下,保证能用:
tinyre ver 0.8.1
A tiny regex engine.
小型正则引擎,语法与python的sre近似,当前仅支持匹配(match)和替换(sub)。
支持 : . ? * + | ^ $ () [] 分组 非贪婪匹配
不支持 : {}
PS: 在支持的语法中,能过python的test部分所有的match测试。sub则比较残缺。
地址如下:
https://github.com/fy0/tinyre
==================================================
这是老黄历,别看了,这版本有严重BUG:
因为不知道pcre为毛需要那么多代码,所以我就自己实现了一个正则引擎。
默默的开发了一个月,开始阶段废弃了四个设计重写了至少六次,
所幸随着第七原型被设计出来稳定下来了。
我想这个设计应该是全新的,既没有图也没有树,
核心数据结构也仅仅只有一个,而且还非常简单。
今天正好满月,同时也完成了否定匹配的部分,
我想无论是DFA该有的还是NFA该有的这货都算合格了,仅剩搞定非贪婪匹配之后,就只是添砖加瓦的水平了。
嗯,还有测试。
当前版本的代码量大概是1100行,不过其实在300行的时候整个设计已经定型。
匹配方面力求与python的re单元一致。等到差不多可以完全替代的时候我会弄个Wrapper的。
地址见签名。
新的特性如下,保证能用:
tinyre ver 0.8.1
A tiny regex engine.
小型正则引擎,语法与python的sre近似,当前仅支持匹配(match)和替换(sub)。
支持 : . ? * + | ^ $ () [] 分组 非贪婪匹配
不支持 : {}
PS: 在支持的语法中,能过python的test部分所有的match测试。sub则比较残缺。
地址如下:
https://github.com/fy0/tinyre
==================================================
这是老黄历,别看了,这版本有严重BUG:
因为不知道pcre为毛需要那么多代码,所以我就自己实现了一个正则引擎。
默默的开发了一个月,开始阶段废弃了四个设计重写了至少六次,
所幸随着第七原型被设计出来稳定下来了。
我想这个设计应该是全新的,既没有图也没有树,
核心数据结构也仅仅只有一个,而且还非常简单。
今天正好满月,同时也完成了否定匹配的部分,
我想无论是DFA该有的还是NFA该有的这货都算合格了,仅剩搞定非贪婪匹配之后,就只是添砖加瓦的水平了。
嗯,还有测试。
当前版本的代码量大概是1100行,不过其实在300行的时候整个设计已经定型。
匹配方面力求与python的re单元一致。等到差不多可以完全替代的时候我会弄个Wrapper的。
地址见签名。