快速业务通道

Linux Shell 基本概念及编程(2)

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-03-27

正则表达式,是一种表达式,那么这种表达式用来干嘛呢?这种表达式可以针对谁起作用呢?理解了这两个就可以得出正则表达式,正则表达式是针对字符进行匹配的运算表达式.我们明白了第一点,正则表达式只能作用于字符文件,或者说一段字符串.那么使用这个表达式,通常可以用来干嘛呢?通常有三种,一种是搜索,一种是替换,还有一种是统计.正则表达式通常使用前后两个“/”来表示,如图所示 /^love/.正则表达式在几乎所有的语言中都有支持,在LINUX SHELL中也是提供了支持.通常我们使用正则表达式同在VI中使用正则表达式一样.正则表达式作为一个表达式,通常有两种元素组成,一种是元元素,就是含有特殊意义的字符,这些字符用来表示一些特定含义,如^表示行首,$表示行尾.注意这种元字符与SHELL内部的通配符是两码事.另外一种是字符元素如/love/就是所有含有love的字符,/^love/加了一个元元字符,就是匹配以love开始的行.下表列出了所有LINUX Shell规则的正则表达式的元元素符.

^ 行首标志 /^love/ 匹配所有以love开始的行
$ 行尾标志 /love$/ 匹配以love结尾的行
. 匹配一个字符 /l..e/ 匹配包含一个l,后面两个任意字符,再接上e的所有行
* 匹配一个或多个前向的字符 /*love/ 匹配一个或多个格,后面跟上love的行,这里的*与通配符*含义是不同的,后者是任意字符
[] 匹配其中一个 /[Ll]ove/ 匹配包含love或者Love的所有行
[x-y] 匹配在指字区间范围内的字符的一个 /[A-Z]ove/ 匹配从A到Z中一个字符后接ove的所有单词
[x-y ] 匹配在指定字符区间x-y和后面的字符中一个 /[A-Z l]ove/ 配置从A到Z中一个字符后接ove或者love的所有行
\< 单词开始标志 /\&lt;love/ 匹配以love这个单词开头的行(vi和grep支持)
\> 单词结束标志 /love\&gt;/ 匹配以love这个单词结尾的行
[^] 匹配不在[]这个集合中的任意字符 /[^A-Z]/ 匹配任意字符不在A到Z范围内
\ 用来转义 /love\./ 匹配包含love.不是lovely等的
\(..\) 标志后面需要用到的字符串(通常用于替换) /\(love\)able\1er/ \1作为一个暂存标志,前面搜索到字符串loveable,替换成loveer
x\{m\} or x\{m,\} or x\{m,n\} 指定出现次数的字符 o\{5,10\} 用来匹配o出现5到10次行
Empire CMS,phome.net

使用这些规则可以使用vi编一个字符文件来尝试一下,也可以在windows中用ultraedit来试一下.

如针对上面的一段字符串,可以尝试如下表达式 /^love/ , /love$/,/l.ve/, /o*ve/ ,/[Ll]ove/,/ove[a-z]/,/ove[^a-zA-Z0-9]/

前面所说的一个正则表达式由元字符和字符组成,那么想要将元字符变成正常字符,只需要用转义符\来表示如/love./ 和/love\./表示就不一样,后面只能匹配"love.”,前面则可以匹配lovely等.

关于列表中的后两种,比较复杂,用的也比较少.可参考如下图学习:

Empire CMS,phome.net

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号