分页: 1 / 1

[轮子]一个全新开发的正则引擎

发表于 : 2012-05-08 18:43
fy0
后来重构了整个项目,代码量还是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的。

地址见签名。

Re: [轮子掌控者]一个全新开发的正则引擎(c99)

发表于 : 2012-05-08 19:07
枫叶饭团
膜拜.bin

Re: [轮子掌控者]一个全新开发的正则引擎(c99)

发表于 : 2012-05-18 22:57
fy0
啊 小小更新了下,把n天前做的的非贪婪匹配提交上去了。

最近很懒啊……大家能否掺和下搞完了它

Re: [轮子掌控者]一个全新开发的正则引擎(c99)

发表于 : 2012-05-18 23:06
枫叶饭团
我表示,最近已经懒到睡觉都不想睡了

Re: [轮子掌控者]一个全新开发的正则引擎(c99)

发表于 : 2012-05-24 13:37
fy0
枫叶饭团 写了:我表示,最近已经懒到睡觉都不想睡了
-。- 最终还是爬起来干了点活。

昨天跑去添加了py的绑定,现在这个程序可以被用在python中了……

> 现在的问题就是组机制还有点小故障:
> (.)*b 这种表达式匹配ab之后组内的东西不正常。
-> 已经修复

再缝缝补补,就算0.7.5版本就算完成了。
import re
s = "a" * 29
re.match(r'a?'*29 + 'a'*29,s)

上面举的那种代码在匹配的时候会占用大量的时间,
目前有了一个补正方案,等做出来应该就是0.8或者1.0了吧……真舍不得0.7.x这个版本号

Re: [轮子掌控者]一个全新开发的正则引擎(c99)

发表于 : 2012-05-24 14:56
eexpress
与python的re单元一致
:em20

Re: [轮子掌控者]一个全新开发的正则引擎(c99)

发表于 : 2012-05-24 15:02
Eastsun
我只是想知道,LZ的引擎比起其它的实现在性能方面做过比较么?

Re: [轮子掌控者]一个全新开发的正则引擎(c99)

发表于 : 2012-05-24 16:05
fy0
eexpress 写了:
与python的re单元一致
:em20
制作的本意就是在c中能有个轻量级的正则用,因为用py多觉得这个设计不错也够用,就照抄了。
Eastsun 写了:我只是想知道,LZ的引擎比起其它的实现在性能方面做过比较么?
暂时还没 -,-

Re: [轮子掌控者]一个全新开发的正则引擎(c99)

发表于 : 2012-08-13 22:25
fanhe
google的re2是c++的,用起来还算简单
c写普通应用已经不喜欢用了

Re: [轮子掌控者]一个全新开发的正则引擎(c99)

发表于 : 2012-08-13 22:44
zkwlx
我去,正则,用着都恶心,更何况写。。。。。

Re: [轮子掌控者]一个全新开发的正则引擎(c99)

发表于 : 2012-08-13 23:10
phoenixlzx
正则恶心+1... :em04

不过若是写好的正则用起来倒是蛮方便的 :em05