正则表达式
西门仙忍
从事数据库领域8年
展开
-
正则基础之——NFA引擎匹配原理
NFA引擎匹配原理1 为什么要了解引擎匹配原理一个个音符杂乱无章的组合在一起,弹奏出的或许就是噪音,同样的音符经过作曲家的手,就可以谱出非常动听的乐曲,一个演奏者同样可以照着乐谱奏出动听的乐曲,但他/她或许不知道该如何去改变音符的组合,使得乐曲更动听。作为正则的使用者也一样,不懂正则引擎原理的情况下,同样可以写出满足需求的正则,但是不知道原理,却很难写出高效且没有隐患的正则转载 2014-11-07 10:38:02 · 351 阅读 · 0 评论 -
RE2性能测试
http://coreperf.com/update/rejit/2013/09/01/rejit_pcre_benchmarks.html原创 2014-12-15 11:30:25 · 1119 阅读 · 0 评论 -
正则基础之——贪婪与非贪婪模式
1 概述贪婪与非贪婪模式影响的是被量词修饰的子表达式的匹配行为,贪婪模式在整个表达式匹配成功的前提下,尽可能多的匹配,而非贪婪模式在整个表达式匹配成功的前提下,尽可能少的匹配。非贪婪模式只被部分NFA引擎所支持。属于贪婪模式的量词,也叫做匹配优先量词,包括:“{m,n}”、“{m,}”、“?”、“*”和“+”。在一些使用NFA引擎的语言中,在匹配优先量词后加上“?”,转载 2014-11-07 11:47:27 · 408 阅读 · 0 评论 -
Regular Expression Matching Can Be Simple And Fast
IntroductionThis is a tale of two approaches to regular expression matching. One of them is in widespread use in the standard interpreters for many languages, including Perl. The other is used onl转载 2014-12-19 11:59:22 · 1229 阅读 · 0 评论 -
正则引擎:DFA和NFA
1.历史:引用正则表达式萌芽于1940年代的神经生理学研究,由著名数学家Stephen Kleene第一个正式描述。具体地说,Kleene归纳了前述的神经生理学研究,在一篇题为《正则集代数》的论文中定义了“正则集”,并在其上定义了一个代数系统,并且引入了一种记号系统来描述正则集,这种记号系统被他称为“正则表达式”。在理论数学的圈子里被研究了几十年之后,1968年,后来发明了UN转载 2014-11-06 09:49:58 · 1577 阅读 · 0 评论 -
RE2,C++正则表达式库实战
RE2简介RE2是,一个高效、原则性的正则表达式库,由Rob Pike和Russ Cox两位来自google的大牛用C++实现。他俩同时也是Go语言的主导者。Go语言中的regexp正则表达式包,也是RE2的Go实现。RE2是,一个快速、安全,线程友好,PCRE、PERL和Python等回溯正则表达式引擎(backtracking regular expressio转载 2014-11-06 17:03:50 · 14510 阅读 · 1 评论 -
PCRE函数简介和使用示例
aa aaaaaaaaaaaaa转载 2014-06-30 11:24:58 · 877 阅读 · 0 评论 -
编译原理三大经典书籍(龙书 虎书 鲸书)
1、龙书(Dragon book) 英文名:Compilers: Principles,Techniques,and Tools 作者:Alfred V.Aho,Ravi Sethi,Jeffrey D.Ullman 中文名:编译原理技术和工具 第一版龙书 第二版龙书 龙书”。龙书是Alfred V. Aho等人于1986年出版的转载 2014-11-06 09:48:46 · 2015 阅读 · 0 评论 -
Regular Expression Matching in the Wild
IntroductionThe first two articles in this series, “Regular Expression Matching Can Be Simple And Fast” and “Regular Expression Matching: the Virtual Machine Approach,” introduced the foundation转载 2014-11-12 16:02:42 · 1074 阅读 · 0 评论 -
Regular Expression Matching in the Wild(中文)
说明在本系列的前两篇文章, 正则表达式匹配可以简单快速的“ 和”正则表达式匹配:虚拟机的方法“ ,介绍了基于DFA的正则表达式匹配和基于NFA。 都基于玩具优化教学的基本实现思路。 本文基于。我花了2006楼的夏天代码搜索 ,它可以让程序员的搜索代码使用规则的来源。 就是,它让grep通过世界公共源代码。我们原计划用PCRE正则表达式的搜索, 直到我们意识到,它使用了回溯算原创 2014-11-12 16:04:46 · 1409 阅读 · 0 评论 -
正则回溯原理
回溯BacktrackingNFA引擎最重要的性质是,它会依次处理各个子表达式或组成元素,遇到需要在两个可能成功的可能中进行选择的时候,它会选择其一,同时记住另一个,以备稍后可能的需要。需要做出选择的情形包括量词(决定是否尝试另一次匹配)和多选结构(决定选择哪个多选分支,留下哪个稍后尝试)。不论选择那一种途径,如果它能匹配成功,而且正则表达式的余下部分也成功了,匹配转载 2014-11-10 15:00:13 · 769 阅读 · 0 评论 -
固化分组
字符串"123.456",正则表达式为【\.(\d\d[1-9]?)\d+】,我们来看下 首先(小数点前123不说了),【\.】匹配".",匹配成功,把控制权给下一个【\d】,【\d】匹配“4”成功,把控制权给第二个【\d】,这个【\d】匹配“5”成功,然后,把控制权给了【[1-9]?】,由于量词是【?】,正则表达式遵循“量词优先匹配”,而且,此处是【?】,还会留下一个回溯点。然后匹配"6"成原创 2014-11-10 16:21:04 · 464 阅读 · 0 评论 -
正则-反向引用
1.1 什么是捕获组捕获组就是把正则表达式中子表达式匹配的内容,保存到内存中以数字编号或显式命名的组里,方便后面引用。当然,这种引用既可以是在正则表达式内部,也可以是在正则表达式外部。捕获组有两种形式,一种是普通捕获组,另一种是命名捕获组,通常所说的捕获组指的是普通捕获组。语法如下:普通捕获组:(Expression)命名捕获组:(?Expression)普通捕获组在大原创 2014-11-06 20:05:10 · 1149 阅读 · 0 评论 -
re::engine::RE2
Module Version: 0.11 Source NAMESYNOPSISDESCRIPTIONMETHODSPRAGMA OPTIONSPERFORMANCESimple matchingURL matchingMany alternativesNOTESBUGSAUTHORSCOPYRIGHT转载 2014-12-15 11:37:52 · 642 阅读 · 0 评论