貌似刚开学的时候装了个逼,和老师立了个flag说我要写个正则表达式引擎,然后学期末估计老师早就忘了这茬了,在历时3个月的懒癌发作下,终于在这学期末deadline的时候花了一个下午加晚上在没有网的房间写完了它,于是便有了这篇blog,本来想正儿八紧写篇论文,说不定毕业设计可以直接丢一篇这个走人,但....
分类:
其他好文 时间:
2015-07-08 14:25:06
阅读次数:
102
这两天一直在思考,正则表达式的消耗点在哪里。总结与分析了一下,如下:我们先来看看正则表达式的工作流程:1.正则表达式需开启正则表达式引擎。(由各自语言的编译引擎开启)2.编译正则表达式,把它转换成本机代码例程。3.寻找正则匹配的起始点。(这点似乎可通过算法进行优..
分类:
其他好文 时间:
2015-06-16 19:27:04
阅读次数:
128
元字符 现在你已经知道几个很有用的元字符了,如\b,.,*,还有\d.正则表达式里还有更多的元字符,比如\s匹配任意的空白符,包括空格,制表符(Tab),换行符,中文全角空格等。\w匹配字母或数字或下划线或汉字等。 注:对中文/汉字的特殊处理是由.Net提供的正则表达式引擎支持的,其它环境下的具体情...
分类:
其他好文 时间:
2015-06-05 22:26:42
阅读次数:
282
~使用正则表达式-re模块提供了一个正则表达式引擎的接口,可以让你将REstring编译成对象并用他们来进行匹配。#如果经常使用,建议编译compile范例:>>>r1=r‘^\d{3,4}-?\d{8}‘
>>>re.findall(r1,‘010-12345678‘)
[‘010-12345678‘]
>>>p_tel=re.compi..
分类:
编程语言 时间:
2015-06-03 13:52:46
阅读次数:
175
C#正则表达式理论:正则表达式是一种匹配输入文本的模式。.Net框架提供了允许这种匹配的正则表达式引擎。模式由一个或多个字符、运算符和结构组成。定义正则表达式下面列出了用于定义正则表达式的各种类别的字符、运算符和结构。字符转义字符类定位点分组构造限定符反向引用构..
正则表达式(regular expression, 简称RegEx)用途:查找替换多个匹配结果:绝大多数正则表达式引擎的默认行为是只返回第1个匹配结果.只能匹配\n外的任何单个字符WANRING:验证某个模式不能获得预期的结果并不困难,但如何验证它不会匹配到你不想要的东西可就没那么简单了。-(连字符...
分类:
其他好文 时间:
2015-05-28 00:17:19
阅读次数:
113
(正则引擎已完成,Github)我们上一节已经将 NFA 构建出来了,我们的 NFAState 对象的结构实际上是这样的:NFAState { private Set directTable; private Map> transitionMap; private int id;}...
分类:
其他好文 时间:
2015-05-17 12:05:13
阅读次数:
138
(正则引擎已完成,Github)最小化 DFA 是引擎中另外一个略繁琐的点(第一个是构建语法树)。基本思路是,先对 DFA 进行重命名,然后引入一个拒绝态 0,定义所有状态经过非接受字符转到状态 0,0 接受所有字符转换为自身。也就是说我们先建立一个转换表,然后把第一行填写为:stateabcdef...
分类:
其他好文 时间:
2015-05-17 12:04:41
阅读次数:
220
语法树如何实现对于之后步骤的繁琐程度有着举足轻重的影响。因为我们已经有了一棵简单优雅的语法树,所以我们的 NFA 很容易就可以构建出来。下面来回顾一下我们拥有的节点种类:分支节点:Concat, Or, Many叶子节点:Closure, Char以下是转换的核心代码: public void...
分类:
其他好文 时间:
2015-05-17 10:41:38
阅读次数:
203
我们上一节已经将 NFA 构建出来了,我们的 NFAState 对象的结构实际上是这样的:NFAState { private Set directTable; private Map> transitionMap; private int id;}其中 transitionMap...
分类:
其他好文 时间:
2015-05-17 10:37:30
阅读次数:
161