定义:
不确定的有限自动机(NFA): 一种数学模型
(1) 一个有限的状态集合S
(2) 一个输入符号集合∑(不包含ε)
(3) 一个转换函数move: S X (∑ U {ε}) -> P(S)
(4) 状态s0是唯一的开始状态
(5) 状态集合F是接受状态集合,S包含F
确定的有限自动机(DFA): 是NFA的特殊情况
(1) 任何状态都没有ε转换
(2) 对于...
分类:
其他好文 时间:
2014-06-24 22:47:04
阅读次数:
270
正则表达式几乎每个程序员都会用到,对于这么常见的一个语言,有没有想过怎么去实现一个呢?乍想一下,也许觉得困难,实际上实现一个正则表达式的引擎并没有想像中的复杂,《编译原理》一书中有一章专门讲解了怎么基于状态机来构建基本的正则表达式引擎,讲这个初衷是为词法分析服务,不过书里的东西相对偏理论了些,实现起...
分类:
其他好文 时间:
2014-05-17 22:50:19
阅读次数:
981
原文:js 正则学习小记之NFA引擎之前一直认为自己正则还不错,在看 次碳酸钴,Barret
Lee
等大神都把正则玩的出神入化后发现我只是个战五渣。求抱大腿,求大神调教、之前大致有个印象,正则有很多种引擎,但我根本不知道有哪些引擎。今天在读《精通正则表达式》才发现有Traditional
NFA,...
分类:
Web程序 时间:
2014-05-12 07:59:20
阅读次数:
312
原文:js 正则学习小记之匹配字符串优化篇昨天在《js 正则学习小记之匹配字符串》谈到
/"(?:\\.|[^"])*"/
是个不错的表达式,因为可以满足我们的要求,所以这个表达式可用,但不一定是最好的。从性能上来说,他非常糟糕,为什么这么说呢,因为 传统型NFA引擎
遇到分支是从左往右匹配的,所以...
分类:
Web程序 时间:
2014-05-12 07:52:08
阅读次数:
319
昨天在《js 正则学习小记之匹配字符串》谈到 /"(?:\\.|[^"])*"/
是个不错的表达式,因为可以满足我们的要求,所以这个表达式可用,但不一定是最好的。从性能上来说,他非常糟糕,为什么这么说呢,因为 传统型NFA引擎
遇到分支是从左往右匹配的,所以它会用 \\. 去匹配每一个字符,发现不对...
分类:
Web程序 时间:
2014-05-10 02:53:34
阅读次数:
316
之前一直认为自己正则还不错,在看 次碳酸钴,Barret Lee
等大神都把正则玩的出神入化后发现我只是个战五渣。求抱大腿,求大神调教、之前大致有个印象,正则有很多种引擎,但我根本不知道有哪些引擎。今天在读《精通正则表达式》才发现有Traditional
NFA,POSIX NFA 和 DFA (具...
分类:
Web程序 时间:
2014-05-06 12:52:31
阅读次数:
372