资料介绍
正则表达式是描述文本模式的表示法,它可以有效地构造一种用于模式匹配的专用语言。虽然正则表达式可以有多种不同的形式,但它们都有着共同的特点:模式中的大多数字符都是匹配字符串中的字符本身,但有些元字符(metacharacter)却有着特定的含义,例如*表示某种重复,而[...]表示方括号中字符集合的任何一个字符。
实际上,在文本编辑器之类的程序中,所执行的查找操作都是查找文字,因此正则表达式通常是像“print”之类的字符串,而这类字符串将与文档中所有的“printf”或者“sprintf”或者“printer paper”相匹配。在Unix和Windows中可以使用所谓的通配符来指定文件名,其中字符*可以用来匹配任意数量的字符,因此匹配模式*.c就将匹配所有以.c结尾的文件。此外,还有许许多多不同形式的正则表达式,甚至在有些情况下,这些正则表达式会被认为都是相同的。Jeffrey Friedl编著的《Mastering Regular Expressions》一书对这一方面问题进行了广泛的研究。
Stephen Kleene在20世纪50年代的中期发明了正则表达式,用来作为有限自动机的表示法,事实上,正则表达式与其所表示的有限自动机是等价的。20世纪60年代年代中期,正则表达式最初出现在Ken Thompson版本的QED文本编辑器的程序设置中。1967年Thompson申请了一项基于正则表达式的快速文本匹配机制的专利。这项专利在1971年获得了批准,它是最早的软件专利之一[U.S. Patent 3,568,156, Text Matching Algorithm, March 2, 1971].
后来,正则表达式技术从QED移植到了Unix的编辑器ed中,然后又被移植到经典的Unix工具grep中,而grpe正是由于Thompson对ed进行了彻底地修改而形成的。这些广为应用的程序使得正则表达式为早期的Unix社群所熟知。
Thompson最初编写的匹配器是非常快的,因为它结合了两种独立的思想。一种思想是在匹配过程中动态地生成机器指令,这样就可以以机器指令执行的速度而不是解释执行的速度来运行。另一种思想是在每个阶段中都尽可能地执行匹配操作,这样无需回朔(backtrack)就可以查找可能的匹配。在Thompson后来编写的文本编辑器程序中,例如ed,匹配代码使用了一种更为简单的算法,这种算法将会在必要的时候进行回朔。从理论上来看,这种方法的运行速度要更慢,但在实际情况中,这种模式很少需要进行回朔,因此,ed和grep中的算法和代码足以应付大多数的情况。
在后来的正则表达式匹配器中,例如egrep和fgrep等,都增加了更为丰富的正则表达式类型,并且重点是要使得匹配器无论在什么模式下都能够快速执行。功能更为强大的正则表达式正在被越来越多地使用,它们不仅被包含在用C语言开发的库中,而且还被作为脚本语言如Awk和Perl的语法的一部分。
实际上,在文本编辑器之类的程序中,所执行的查找操作都是查找文字,因此正则表达式通常是像“print”之类的字符串,而这类字符串将与文档中所有的“printf”或者“sprintf”或者“printer paper”相匹配。在Unix和Windows中可以使用所谓的通配符来指定文件名,其中字符*可以用来匹配任意数量的字符,因此匹配模式*.c就将匹配所有以.c结尾的文件。此外,还有许许多多不同形式的正则表达式,甚至在有些情况下,这些正则表达式会被认为都是相同的。Jeffrey Friedl编著的《Mastering Regular Expressions》一书对这一方面问题进行了广泛的研究。
Stephen Kleene在20世纪50年代的中期发明了正则表达式,用来作为有限自动机的表示法,事实上,正则表达式与其所表示的有限自动机是等价的。20世纪60年代年代中期,正则表达式最初出现在Ken Thompson版本的QED文本编辑器的程序设置中。1967年Thompson申请了一项基于正则表达式的快速文本匹配机制的专利。这项专利在1971年获得了批准,它是最早的软件专利之一[U.S. Patent 3,568,156, Text Matching Algorithm, March 2, 1971].
后来,正则表达式技术从QED移植到了Unix的编辑器ed中,然后又被移植到经典的Unix工具grep中,而grpe正是由于Thompson对ed进行了彻底地修改而形成的。这些广为应用的程序使得正则表达式为早期的Unix社群所熟知。
Thompson最初编写的匹配器是非常快的,因为它结合了两种独立的思想。一种思想是在匹配过程中动态地生成机器指令,这样就可以以机器指令执行的速度而不是解释执行的速度来运行。另一种思想是在每个阶段中都尽可能地执行匹配操作,这样无需回朔(backtrack)就可以查找可能的匹配。在Thompson后来编写的文本编辑器程序中,例如ed,匹配代码使用了一种更为简单的算法,这种算法将会在必要的时候进行回朔。从理论上来看,这种方法的运行速度要更慢,但在实际情况中,这种模式很少需要进行回朔,因此,ed和grep中的算法和代码足以应付大多数的情况。
在后来的正则表达式匹配器中,例如egrep和fgrep等,都增加了更为丰富的正则表达式类型,并且重点是要使得匹配器无论在什么模式下都能够快速执行。功能更为强大的正则表达式正在被越来越多地使用,它们不仅被包含在用C语言开发的库中,而且还被作为脚本语言如Awk和Perl的语法的一部分。
下载该资料的人也在下载
下载该资料的人还在阅读
更多 >
- Python正则表达式指南 10次下载
- 正则表达式在Vivado约束文件(xdc)中的应用(转)
- Python正则表达式的学习指南 0次下载
- Python正则表达式教程之标准库的完整介绍及使用示例说明 3次下载
- 如何在C++ Builder6上使用Boost正则表达式库的详细资料概述 1次下载
- 基于改进正则表达式规则分组的内网行为审计方案 0次下载
- 神奇的匹配:正则表达式求精之旅 扫描版带目录.part1 0次下载
- 神奇的匹配:正则表达式求精之旅 扫描版带目录.part2 0次下载
- 正则表达式学习心得 8次下载
- 基于正则表达式匹配的网络设备自动管理系统_李林广 0次下载
- 基于正则表达式的数据处理应用方斌 0次下载
- 源码-正则表达式应用一例 1次下载
- 正则表达式应用一例 3次下载
- 精通正则表达式 5次下载
- PHP正则表达式 0次下载
- 你还不会gvim正则表达式?一文搞懂! 898次阅读
- GVIM正则表达式介绍和使用示例 845次阅读
- 什么是正则表达式?正则表达式如何工作?哪些语法规则适用正则表达式? 1665次阅读
- C#模式匹配完全指南 389次阅读
- OpenHarmony中使用正则表达式 1058次阅读
- shell脚本基础:正则表达式grep 1043次阅读
- 正则表达式(RegularExpression)使用指南 1354次阅读
- 文本处理技巧之正则表达式 3467次阅读
- C语言如何使用正则表达式 4690次阅读
- 不懂正则表达式?不如借助这三个神器 2056次阅读
- 教你如何轻松搞定Linux正则表达式 3523次阅读
- 3分钟搞定Linux正则表达式! 2755次阅读
- 校验数字校验字符和特殊需求的常用正则表达式大全 4.9w次阅读
- 快速入门IPv6和正则表达式 8720次阅读
- 开发中常用的一些正则表达式的汇总 2406次阅读
下载排行
本周
- 1电子电路原理第七版PDF电子教材免费下载
- 0.00 MB | 1490次下载 | 免费
- 2单片机典型实例介绍
- 18.19 MB | 92次下载 | 1 积分
- 3S7-200PLC编程实例详细资料
- 1.17 MB | 27次下载 | 1 积分
- 4笔记本电脑主板的元件识别和讲解说明
- 4.28 MB | 18次下载 | 4 积分
- 5开关电源原理及各功能电路详解
- 0.38 MB | 10次下载 | 免费
- 6基于AT89C2051/4051单片机编程器的实验
- 0.11 MB | 4次下载 | 免费
- 7蓝牙设备在嵌入式领域的广泛应用
- 0.63 MB | 3次下载 | 免费
- 89天练会电子电路识图
- 5.91 MB | 3次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234313次下载 | 免费
- 2PADS 9.0 2009最新版 -下载
- 0.00 MB | 66304次下载 | 免费
- 3protel99下载protel99软件下载(中文版)
- 0.00 MB | 51209次下载 | 免费
- 4LabView 8.0 专业版下载 (3CD完整版)
- 0.00 MB | 51043次下载 | 免费
- 5555集成电路应用800例(新编版)
- 0.00 MB | 33562次下载 | 免费
- 6接口电路图大全
- 未知 | 30320次下载 | 免费
- 7Multisim 10下载Multisim 10 中文版
- 0.00 MB | 28588次下载 | 免费
- 8开关电源设计实例指南
- 未知 | 21539次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935053次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537791次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420026次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234313次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233045次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191183次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183277次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138039次下载 | 免费
评论
查看更多