首页 > 代码库 > 正则表达式
正则表达式
接触UNIX正则表达式,也差不多有年把时间了,但是一直不是很清晰,正则表达式确切的含义。
趁着现在拿着工资,不干实事的机会,把正则表达式总结一下吧。
下面这个图是楼主看《sed与awk第二版》这本书,从里面抄下来的。楼主把内容画成了思维导图,看
起来方便点。
下面这幅图,主要描述了正则表达式的概念,匹配过程的理解,基本元字符及扩展元字符等内容。
其实理解起来,正则表达式,是个啥东西呢? 说白了,正则表达式就是一个字符串。。
不过和咱们平时看到的字符串,不同的地方是什么呢?
正则表达式的这一串字符串,可以是不变的字面量,比如"abc"。也是可以是经过正则表达式元字符修饰
之后的一串变量字符串,比如"abc*",从这个层次来看,正则表达式也是一种模式。 符合我模式的留下,不符合的pass掉
啥叫模式呢? 楼主瞎掰了一个例子,不一定对啊。
其实正则表达式匹配的过程,楼主觉得,就和招聘会差不多嘛。
招聘方发布一个一个岗位,比如说运维岗位,1要精通linux,2要会bash,perl,python等脚本语言中的一种以上。3.有c++,java等语言开发经验者优先 4.要有团队协作的精神。
OK,应聘的人来了好多,但是你来这么多人,不一定都满足我的岗位要求吧。。。OK,这个时候,HR就可以根据的招聘要求,对应聘的人进行筛选,满足条件的留下。
OK,这个岗位招聘条件,其实就和正则表达式差不多,当然楼主这个例子,还有很多不恰当的地方,正则表达式,是只要你满足我的模式,全部筛选出来。 而招聘,则有择优,HR个人判断等等额外因素了。
在说说基本元字符和扩展元字符吧。
基本元字符发行的时间早点嘛,grep和sed是用的基本元字符(BRE)
扩展元字符,就是基本元字符不够用了或不好用了,然后就有了扩展元字符,egrep和awk是使用的扩展元字符(ERE)。
OK,理论知识做了个小总结。
理论简单,灵活运行才是最重要的,不过灵活运用这东西就要以后不断的发散思维,不断的结合着工具去实际运用了。
楼主在这里收录几个比较常用的正则组合吧,下面这边表格以后就不断更新了。
匹配空行 | ^$ |
匹配任意字符 | *$ |
匹配整行 | ^.*$ |
匹配年月日(2014--07-03) | [0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\} |
匹配开头为空白的行 | ‘^ ‘ |
匹配空行或开头为空白的行 | ‘^$|^ ‘ |
本文出自 “西风” 博客,请务必保留此出处http://lixcto.blog.51cto.com/4834175/1433981