正则表达式入门经典的相关图书
发布时间:2025-05-20 08:43:21 发布人:远客网络
一、正则表达式入门经典的相关图书
形式语义学基础 [专著]/陈意云编著,合肥,中国科学技术大学出版社,1994.3,7-312-00533-0,5,237页26cm,TP301.2/C49
形式语义学的稳定论域理论/陈仪香著,北京,科学出版社,2003,7-03-011264-4,205页20cm,TP301.2/C497
Combinatorics on Words [专著]:Progress and Perspectives/Edited by Larry J.Cummings,Ontario,Academic Press Canada,1983,0-12-198820-1,ix,405p.21cm,TP301.2/C971
Languages, compilers, and tools for embedded systems:ACM SIGPLAN Workshop LCTES 2000, Vancouver, Canada, June 2000: proceedings/Jack Davidson, Sang Lyul Min(eds.),N.Y.,Tata Institute of Fundamental Research,2001.,3-540-41781-8,viii,220p.fig.,tab.,TP301.2/D252
精通正则表达式:第3版/(美)Jeffrey E.F.Friedl著;余晟译,北京,电子工业出版社,2007,978-7-121-04684-1,515页25cm,TP301.2/F831
正则表达式经典实例/(美)Jan Goyvaerts,(美)Steven Levithan著;郭耀译,北京,人民邮电出版社,2010,978-7-115-22832-1,457页24cm,TP301.2/G722
形式语言与自动机导论:英文版/(美)Peter Linz著,北京,机械工业出版社,2004,7-111-15310-3,15,410页24cm,TP301.2/L610
形式语言与自动机导论/(美)Peter Linz著;孙家骕等译,北京,机械工业出版社,2005,7-111-16788-0,289页26cm,TP301.2/L610
Computer Literacy:Survival kit,for the Apple II,lle Family of Computers/Arthur Luehrmann,Herbert Peckham,Maidenhead,McGraw-Hill Book Co.,1984,0-07-049206-9,xiii,417p.ill.23cm,TP301.2/L926
二、正则表达式的起源
1、正则表达式的“鼻祖”或许可一直追溯到科学家对人类神经系统工作原理的早期研究。美国新泽西州的Warren McCulloch和出生在美国底特律的Walter Pitts这两位神经生理方面的科学家,研究出了一种用数学方式来描述神经网络的新方法,他们创造性地将神经系统中的神经元描述成了小而简单的自动控制元,从而作出了一项伟大的工作革新。
2、在1956年,一位名叫Stephen Kleene的数学科学家,他在Warren McCulloch和Walter Pitts早期工作的基础之上,发表了一篇题目是《神经网事件的表示法》的论文,利用称之为正则集合的数学符号来描述此模型,引入了正则表达式的概念。正则表达式被作为用来描述其称之为“正则集的代数”的一种表达式,因而采用了“正则表达式”这个术语。
3、之后一段时间,人们发现可以将这一工作成果应用于其他方面。Ken Thompson就把这一成果应用于计算搜索算法的一些早期研究,Ken Thompson是 Unix的主要发明人,也就是大名鼎鼎的Unix之父。Unix之父将此符号系统引入编辑器QED,然后是Unix上的编辑器ed,并最终引入grep。Jeffrey Friedl在其著作《Mastering Regular Expressions(2nd edition)》(中文版译作:精通正则表达式,已出到第三版)中对此作了进一步阐述讲解,如果你希望更多了解正则表达式理论和历史,推荐你看看这本书。
4、自此以后,正则表达式被广泛地应用到各种UNIX或类似于UNIX的工具中,如大家熟知的Perl。Perl的正则表达式源自于Henry Spencer编写的regex,之后已演化成了pcre(Perl兼容正则表达式Perl Compatible Regular Expressions),pcre是一个由Philip Hazel开发的、为很多现代工具所使用的库。正则表达式的第一个实用应用程序即为Unix中的 qed编辑器。
5、然后,正则表达式在各种计算机语言或各种应用领域得到了广大的应用和发展,演变成为计算机技术森林中的一只形神美丽且声音动听的百灵鸟。
6、以上是关于正则表达式的起源和发展的历史描述,如今正则表达式在基于文本的编辑器和搜索工具中依然占据着一个非常重要的地位。
7、在最近的六十年中,正则表达式逐渐从模糊而深奥的数学概念,发展成为在计算机各类工具和软件包应用中的主要功能。不仅仅众多UNIX工具支持正则表达式,近二十年来,在WINDOWS的阵营下,正则表达式的思想和应用在大部分 Windows开发者工具包中得到支持和嵌入应用!从正则式在Microsoft Visual Basic 6或 Microsoft VBScript到.NET Framework中的探索和发展,WINDOWS系列产品对正则表达式的支持发展到无与伦比的高度,几乎所有 Microsoft开发者和所有.NET语言都可以使用正则表达式。如果你是一位接触计算机语言的工作者,那么你会在主流操作系统(*nix[Linux, Unix等]、Windows、HP、BeOS等)、主流的开发语言(delphi、Scala、PHP、C#、Java、C++、Objective-c、Swift、VB、Javascript、Ruby以及Python等)、数以亿万计的各种应用软件中,都可以看到正则表达式优美的舞姿。
三、使用正则表达式的优缺点 C#
书,当然首选《精通正则表达式》
第三版,现在网上也有电子书,你可以看看
我觉得最大的缺点有以下几个方面:
1.正则表达式只适合匹配文本字面,不适合匹配文本意义:像匹配url,email这种纯文本的字符就很好,但比如匹配多少范围到多少范围的数字,如果你这个范围很复杂的话用正则就很麻烦。或者匹配html,这个是很多人经常遇到的,写一个复杂匹配html的正则很麻烦,不如使用针对特定意义的处理器来处理(比如写语法分析器,dom分析器等)
2.容易引起性能问题:像.*这种贪婪匹配符号很容易造成大量的回溯,性能有时候会有上百万倍的下降,编写好的正则表达式要对正则引擎执行方式有很清楚的理解才可以
3.正则的替换功能较差:甚至没有基本的截取字符串或者把首字母改变大小写的功能,这对于url重写引擎有时候是致命的影响
但是也有优点:只要熟练应用正则表达式,而且匹配的目标是纯文本,那么相比于写分析器来说,正则可以更快速的完成工作。还有在捕获字符串的能力,正则也可以很好的完成工作,比如截取url的域名或者其他的内容等等