-
一个用MASM写的正则表达式引擎
此正则表达式引擎属于正统的NFA引擎,基本兼容Perl,简单说一下引擎是怎么实现的:
首先做一个递归下降语法分析,利用栈把正则表达式转换成NFA(以有向图的形式表现),再遍历NFA判断是否能到达完成节点。
实现正则表达式匹配的各种复杂功能的力量来自于回溯,而回溯的基础是栈,回溯能力是通过栈来达成的。
栈中保存了匹配路径中所有的状态,状态回溯就是出栈,状态匹配就是入栈。
除了回溯,一些扩展功能的实现也是通过栈来完成的,比如捕获和零宽断言,都要通过搜索或操纵栈来完成。
转换成NFA再匹配的好处是简化匹配和利于优化和DEBUG:因为不管再复杂的表达式转换成NFA之后只有边和节点组成,边和节点也只有顺序、分支、循环这三种形式组成。
详细原理说明看下面关于实现引擎的文章,第3条是我理解引擎匹配原理的入门参考。
支持GBK和UTF8编码
==参考和学习资料==
关于实现引擎的文章:
1、《Perl语言编程》第五章 书
2、《精通正则表达式》 书
3、构造正则表达式引擎 http://www.cppblog.com/vczh/archive/2008/05/22/50763.html 我的原理学习入门参考
4、NFA引擎匹配原理 http://blog.csdn.net/lxcnn/article/details/4304651
5、英文参考资料 请点击左侧文件开始预览 !预览只提供20%的代码片段,完整代码需下载后查看 加载中 侵权举报
- 2022-05-27 18:36:44下载
- 积分:1
-
很不容易找到的一个外国人写的Fp
很不容易找到的一个外国人写的Fp-growth的算法。注释很清楚,编程风格值得借鉴-Not easy to find a foreigner to write the Fp-growth algorithm. Notes It is clear that programming style is worth learning from
- 2023-01-14 16:00:03下载
- 积分:1
-
多模式字符串匹配ACSM
最近学习算法,在网上找的,可惜只能按照关键字找,不能迷糊匹配
- 2022-04-17 05:38:43下载
- 积分:1
-
Problème du sac-a-dos
- 2023-07-04 10:10:04下载
- 积分:1
-
poj3352给一个图,求出需要加最少的边使去掉任一条边,图都连通.割点的应用...
poj3352给一个图,求出需要加最少的边使去掉任一条边,图都连通.割点的应用-poj3352 to a map, obtained at least the need to remove the edges so that any one side, map are connected. cut-point application
- 2023-07-27 11:35:03下载
- 积分:1
-
计算水平线与垂直线交点个数问题。扫描方法计算。
计算水平线与垂直线交点个数问题。扫描方法计算。-Calculation of horizontal and vertical line of intersection the number of questions. Scanning method.
- 2022-10-24 03:35:03下载
- 积分:1
-
linklist的C++实现方法
数据结构中的linklist的C++实现方法。
实现了其中的各种函数。
- 2022-05-14 09:06:31下载
- 积分:1
-
判断一点是否在多边形内
本程序判断一点是否在任意多边形内,任意多边形要求是各边不能相互交叉。
- 2022-12-09 01:10:03下载
- 积分:1
-
DS18B20在CC2530上的应用程序
应用背景最近写的一个DS18B20进行温度测试程序,应用在Zigbee模块CC2530上。DS18B20采用单总线传输方式,应用中能够最小化利用片上那个资源。关键技术CC2530 是用于2.4-GHz IEEE 802.15.4、ZigBee 和RF4CE 应用的一个真正的片上系统(SoC)解决方案。它能够以非常低的总的材料成本建立强大的网络节点。DS18B20是常用的温度传感器,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。
- 2022-02-26 09:21:55下载
- 积分:1
-
Mathematical Modeling of experiences, the preparation team and have team members...
数学建模的经验之谈,对准备参赛及已经参赛的队员有一定的指导意义。对参加工作的科研人员也有一定借鉴作用。-Mathematical Modeling of experiences, the preparation team and have team members have a certain significance. For participating in the work of researchers also have some reference.
- 2022-12-17 13:20:03下载
- 积分:1