前言
正则表达式是烦琐的,但是强大的,学会之后的应用会让你除了提高效率外,会给你带来绝对的成就感.只要认真去阅读这些资料,加上应用的时候进行一定的参考,掌握正则表达式不是
问题.
索引
1._引子2._正则表达式的历史3._正则表达式定义
3.1_普通字符3.2_非打印字符3.3_特殊字符3.4_限定符3.5_定位符3.6_选择3.7_后向引用
4._各种操作符的运算优先级5._全部符号解释6._部分例子7._正则表达式匹配规则
7.1_基本模式匹配7.2_字符簇7.3_确定重复出现
1.引子
目前,正则表达式已经在很多
软件中得到广泛的应用,包括*nix(Linux,Unix等),HP等操作
系统,
PHP,C#,
Java等开发环境,以及很多的应用软件中,都可以看到正则表达式的影子.
正则表达式的使用,可以通过简单的办法来实现强大的功能.为了简单有效而又不失强大,造成了正则表达式代码的难度较大,
学习起来也不是很容易,所以需要付出一些努力才行,入门之后参照一定的参考,使用起来还是比较简单有效的.
例子:^.+@.+\\..+$
这样的代码曾经多次把我自己给吓退过.可能很多人也是被这样的代码给吓跑的吧.继续阅读本文将让你也可以自由应用这样的代码.
注意:这里的第7部分跟前面的内容看起来似乎有些重复,目的是把前面表格里的部分重新描述了一次,目的是让这些内容更容易理解.
2.正则表达式的历史
正则表达式的"祖先"可以一直上溯至对人类神经系统如何
工作的早期研究.WarrenMcCulloch和WalterPitts这两位神经生
理学家研究出一种数学方式来描述这些神经
网络.
1956年,一位叫StephenKleene的数学家在McCulloch和Pitts早期工作的基础上,发表了一篇标题为"神经网事件的表示法"的论文,引入了正则表达式的概念.正则表达式就是用来描述他称为"正则集的代数"的表达式,因此采用"正则表达式"这个术语.
随后,发现可以将这一工作应用于使用KenThompson的计算
搜索算法的一些早期研究,KenThompson是Unix的主要发明人.正则表达式的第一个实用应用
程序就是Unix中的qed编辑器.
如他们所说,剩下的就是众所周知的历史了.从那时起直至现在正则表达式都是基于文本的编辑器和搜索工具中的一个重要部分.
3.正则表达式定义
正则表达式(regularexpression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串,将匹配的子串做替换或者从某个串中取出符合某个条件的子串等.
列目录时,dir*.txt或ls*.txt中的*.txt就不是一个正则表达式,因为这里*与正则式的*
的含义是不同的.
正则表达式是由普通字符(例如字符a到z)以及特殊字符(称为元字符)组成的文字模式.正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配.
3.1普通字符
由所有那些未显式指定为元字符的打印和非打印字符组成.这包括所有的大写和小写字母字符,所有数字,所有标点符号以及一些符号.
3.2非打印字符
字符
含义
匹配由x指明的控制字符.例如,\cM匹配一个Control-M或回车符.的值必须为A-Z或a-z之x\cx一.否则,将c视为一个原义的'c'字符.\f\n\r\s\S\t\v匹配一个换页符.等价于\x0c和\cL.匹配一个换行符.等价于\x0a和\cJ.匹配一个回车符.等价于\x0d和\cM.匹配任何空白字符,包括空格,制表符,换页符等等.等价于[\f\n\r\t\v].匹配任何非空白字符.等价于[^\f\n\r\t\v].匹配一个制表符.等价于\x09和\cI.匹配一个垂直制表符.等价于\x0b和\cK.