正则表达式LINUX
正则表达式热身正则表达式(regular 例如
转载请标明:
http://www.52php.cn/article/p-tgwugmoz-bw.html
下面先举个简单例子来让大家对正则表达式有个直观的感受。ls命令是linux下最常用的命令。ls命令是list的缩写,缺省下ls用来打印出当前目录的清单。 现在,我们只希望列出以d开头的文件或目录,可以用ls
举一反三,列出以che 是不是觉得有些觉得过于简单了啊??!!好吧,打完小怪,现在升下级。 开始…… 如何列出当前目录下的所有目录(不包含下面的子目录)? 思考…… 到了使出正则表达式杀手锏的时候了,在这里,我们还是使用ls 这样列出来的内容有些多,没完全截下来所有显示结果,但这并不妨碍本文的讲解。 考虑到普通文件是以-开头,如dataf1.txt文件;目录是以d 所以我们就从d这里作为突破口,这时,你会想到,有多少个“开头”的d就应该有多少个目录,太聪明了,好吧,我们按照你的思路实践下。 现在,问题出来了,怎么统计出来有多少个“开头”的d?你想到了linux中grep命令,还想到了正则表达式,于是grep和正则表达式开始粉墨登场了…… ls 这条简单的命令就轻松解决了我们的问题,。"^d"???你纳闷了,这个小东西配合起来怎么会有那么大的威力呢?这好比玩三国杀时刘备、司马懿、香香之间配合的威力……"^d",就是正则表达式的用法,"^"表示匹配行首,"^d"合起来就表示以d开头的一行,grep 谜底解开。现在你又想到,前面不是说还有一种方法的么,既然如此迫不及待,那就只好顺水推舟了。 第二种方法还是基于ls命令,但是用了-F 仔细观察我们发现,在文件名后面,会多出了一些符号,如目录adv_shell名字后多了条斜扛(/),可执行文件checkhost.sh名字后多了个星号(*)……在此,如果想更多了解这些符号意义,可以查看ls 我们现在把注意力集中到目录adv_shell名字后多了条斜扛(/)这条信息上。很快联想到,有多少个斜扛(/)就应该对应多少目录,而且斜扛(/)会跟在每个目录名的最后。我们又想到了grep命令,还想到了应该怎样用正则表达式表示出匹配行尾,答案已经很接近了…… ls 这条短命令又一切成全了我们的梦想。"/$" 在此基础上,我们发散一下思维,比如说想统计当前目录下的文件个数及目录个数,就可以使用以下命令: ls ls 好了,暂且休息,下面我们开始介绍更多关于正则表达式的知识。 蓄势前面我们初识了^ 正则表达式是一个字符或和元字符组合成的字符集,它们匹配(或指定)一个模式。字符即普通字符(例如字符 在这里,为简单见,我们不会介绍所有的正则表达式知识,只介绍常用的一些正则表达式知识。 一个正则表达式包含下面一个或多个项: 1.一个字符集 这里的字符集里的字符表示的就是它们字面上的意思.正则表达式最简单的情况就是仅仅由字符集组成,而没有其他的元字符。 2.锚 一个锚指明了正则表达式在一行文本中要匹配的位置,例如^和$就是锚。 3.修饰符 它们用于展开或缩小(即是修改了)正则表达式匹配文本行的范围.修饰符包括了星号、括号和反斜杠符号。 * 匹配重复零次或多次前一字符 + 匹配一个或多个前面的字符.它的作用和*很相似,但唯一的区别是它不匹配零个字 符的情况 ? 匹配零或一个前面的字符。它一般用于匹配单个字符 . 匹配任意字符( ^ 匹配一行的开头,但依赖于上下文环境,可能在正则表达式中表示否定一个字符 集的意思 转义(escapes) { 要转义是因为不转义的话大括号只是表示他们字面上的意思.这个用法只是技巧上 的而不是基本正则表达式的内容."[0-9]{5}" | "或",正则操作符用于匹配一组可选的字符 {n} n是一个非负整数。匹配确定的n次。例如,''o{2}'' {n,} n是一个非负整数。至少匹配n次。例如,''o{2,}'' {n,m} m和n均为非负整数,其中n<=m。最少匹配n次且最多匹配m次。例如,"o{1,3}"将匹配 b 匹配一个单词边界,也就是指单词和空格间的位置。例如,''erb'' B 匹配非单词边界。''erB''能匹配"verb"中的''er'',但不能匹配"never"中的 w 匹配包括下划线的任何单词字符。等价于''[A-Za-z0-9_]''。 W 匹配任何非单词字符。等价于''[^A-Za-z0-9_]''。 d 匹配一个数字字符。等价于[0-9]。 D 匹配一个非数字字符。等价于[^0-9]。 f 匹配一个换页符。等价于x0c和cL。 n 匹配一个换行符。等价于x0a和cJ。 r 匹配一个回车符。等价于x0d和cM。 s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于[fnrtv]。 S 匹配任何非空白字符。等价于[^fnrtv]。 t 匹配一个制表符。等价于x09 v 匹配一个垂直制表符。等价于x0b和cK。 常用的就介绍到这里,其它的需要进一步了解可以查阅手册或资料。
转载请标明:
http://www.52php.cn/article/p-tgwugmoz-bw.html
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |