当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 11 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : [轮子]一个全新开发的正则引擎
帖子发表于 : 2012-05-08 18:43 

注册: 2011-06-27 0:57
帖子: 190
送出感谢: 7
接收感谢: 2
后来重构了整个项目,代码量还是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的。

地址见签名。


_________________
我的github: https://github.com/fy0


最后由 fy0 编辑于 2013-02-16 12:32,总共编辑了 2 次

页首
 用户资料  
 
2 楼 
 文章标题 : Re: [轮子掌控者]一个全新开发的正则引擎(c99)
帖子发表于 : 2012-05-08 19:07 
头像

注册: 2010-06-16 1:05
帖子: 14668
地址: Tencent
系统: Mac OS X
送出感谢: 1
接收感谢: 153
膜拜.bin


_________________
twitter求fo:http://twitter.com/maplebeats
博客求踩:http://maplebeats.com


页首
 用户资料  
 
3 楼 
 文章标题 : Re: [轮子掌控者]一个全新开发的正则引擎(c99)
帖子发表于 : 2012-05-18 22:57 

注册: 2011-06-27 0:57
帖子: 190
送出感谢: 7
接收感谢: 2
啊 小小更新了下,把n天前做的的非贪婪匹配提交上去了。

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


_________________
我的github: https://github.com/fy0


页首
 用户资料  
 
4 楼 
 文章标题 : Re: [轮子掌控者]一个全新开发的正则引擎(c99)
帖子发表于 : 2012-05-18 23:06 
头像

注册: 2010-06-16 1:05
帖子: 14668
地址: Tencent
系统: Mac OS X
送出感谢: 1
接收感谢: 153
我表示,最近已经懒到睡觉都不想睡了


_________________
twitter求fo:http://twitter.com/maplebeats
博客求踩:http://maplebeats.com


页首
 用户资料  
 
5 楼 
 文章标题 : Re: [轮子掌控者]一个全新开发的正则引擎(c99)
帖子发表于 : 2012-05-24 13:37 

注册: 2011-06-27 0:57
帖子: 190
送出感谢: 7
接收感谢: 2
枫叶饭团 写道:
我表示,最近已经懒到睡觉都不想睡了


-。- 最终还是爬起来干了点活。

昨天跑去添加了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这个版本号


_________________
我的github: https://github.com/fy0


最后由 fy0 编辑于 2012-05-24 19:39,总共编辑了 2 次

页首
 用户资料  
 
6 楼 
 文章标题 : Re: [轮子掌控者]一个全新开发的正则引擎(c99)
帖子发表于 : 2012-05-24 14:56 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 274
引用:
与python的re单元一致
:em20


_________________
● 鸣学


页首
 用户资料  
 
7 楼 
 文章标题 : Re: [轮子掌控者]一个全新开发的正则引擎(c99)
帖子发表于 : 2012-05-24 15:02 

注册: 2010-05-18 14:18
帖子: 389
送出感谢: 2
接收感谢: 6
我只是想知道,LZ的引擎比起其它的实现在性能方面做过比较么?


页首
 用户资料  
 
8 楼 
 文章标题 : Re: [轮子掌控者]一个全新开发的正则引擎(c99)
帖子发表于 : 2012-05-24 16:05 

注册: 2011-06-27 0:57
帖子: 190
送出感谢: 7
接收感谢: 2
eexpress 写道:
引用:
与python的re单元一致
:em20

制作的本意就是在c中能有个轻量级的正则用,因为用py多觉得这个设计不错也够用,就照抄了。

Eastsun 写道:
我只是想知道,LZ的引擎比起其它的实现在性能方面做过比较么?

暂时还没 -,-


_________________
我的github: https://github.com/fy0


页首
 用户资料  
 
9 楼 
 文章标题 : Re: [轮子掌控者]一个全新开发的正则引擎(c99)
帖子发表于 : 2012-08-13 22:25 
头像

注册: 2007-03-24 23:45
帖子: 2357
送出感谢: 0 次
接收感谢: 9
google的re2是c++的,用起来还算简单
c写普通应用已经不喜欢用了


页首
 用户资料  
 
10 楼 
 文章标题 : Re: [轮子掌控者]一个全新开发的正则引擎(c99)
帖子发表于 : 2012-08-13 22:44 
头像

注册: 2009-10-09 12:54
帖子: 989
地址: 北京某胡同
系统: debian
送出感谢: 4
接收感谢: 2
我去,正则,用着都恶心,更何况写。。。。。


_________________
python写的一个跨平台的聊天软件TChat。支持文件传输。
android防火墙droidwall更新,添加月流量统计功能。有兴趣的点我:D
原创Android社交应用[飘],开源免费!


页首
 用户资料  
 
11 楼 
 文章标题 : Re: [轮子掌控者]一个全新开发的正则引擎(c99)
帖子发表于 : 2012-08-13 23:10 
头像

注册: 2009-07-29 20:11
帖子: 2245
地址: Gensokyo
系统: Arch Linux
送出感谢: 4
接收感谢: 23
正则恶心+1... :em04

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


_________________
Phoenix's island
Loliplus Web Services


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 11 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译