-
一个用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
-
雅可比过关法求实对称矩阵特征值与特征向量
雅可比过关法求实对称矩阵特征值与特征向量-Jacobian clearance France realistic symmetric matrix eigenvalue and eigenvector
- 2022-07-12 22:05:55下载
- 积分:1
-
利用高斯消去法求线性方程组
自己写的
简陋了点
利用高斯消去法求线性方程组
自己写的
简陋了点-using Gaussian elimination method for solving linear equations themselves have written a simple point
- 2022-06-17 17:38:07下载
- 积分:1
-
一维等离子体的plrc―fdtd算法程序
一维等离子体的plrc―fdtd算法程序-one-dimensional plasma plrc- fdtd Algorithm
- 2022-03-12 09:53:20下载
- 积分:1
-
快速中值滤波
这是基于CTMF改进的快速中值滤波算法,在该算法上进行了优化和改进成C++版本,在PC上可以达到实时的速度,对于去噪,消噪方面有着非常显著的效果。
- 2022-04-09 10:31:03下载
- 积分:1
-
k平均算法
数据挖掘聚类算法,K平均算法,适合初学者参考,代码详细,注释详细参考资料:数据挖掘原理,算法及应用 李爱国 西安电子科技大学出版社
- 2022-06-12 20:41:36下载
- 积分:1
-
openCV中关于通过码本检测前景的应用代码
openCV中关于通过码本检测前景的应用代码,下载openCV后,配置好环境变量,设置好项目属性(这些网上都有教程),然后运行这个cpp文件,就可以实现码本模型了。
- 2022-04-27 04:51:50下载
- 积分:1
-
队列实现,杨辉三角
利用visiual studio c++平台,实现杨辉三角,并建立起队列,包括它的一些基本操作,如新建,插入,删除等操作
- 2022-02-05 01:04:38下载
- 积分:1
-
基于神经网络的货运量预测
资源描述根据货运量形成的原因,分析了货运量和相关影响因素之间的关系以及货运量预测的特点,在此基础上,建立货运量预测的广义回归神经网络(General Regression Neural Network,GRNN)模型,并以我国某年的货运量和相关经济指标的历史统计数据作为学习样本,通过拟合训练和外推预测分析,验证了GRNN用于货运量预测的有效性.
- 2022-02-26 14:10:55下载
- 积分:1
-
后缀表达式
应用背景它是一类后缀表达式。将中缀表达式转换为后缀表达式。你可以实现一个方法或一个主要的地方,你可以使用该类的方法。关键技术它会非常有用,当你转换一个中缀转后缀表达式。
- 2022-06-15 06:55:42下载
- 积分:1