码迷,mamicode.com
首页 > 其他好文 > 详细

17 正则表达式(重点)

时间:2016-08-21 13:45:41      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:

正则表达式是一种符号表示法,被用来识别文本模式。在某种程度上,它们与匹配文件和路径名的shell通配符比较相似,但其规模更庞大。

一、grep程序

-i 忽略大小写
-v 不匹配
-c 打印匹配数量而不是文本本身
-l 打印包含匹配项的文件名
-L 相似-l,但只打印不包含匹配项的文件名
-n 在每个匹配行之前打印出其位于文件中的相应行号
-h 对应于多文件搜索,不输出文件名

 

二、正则表达式的元字符

                ^ $ . [] {} - ? * + () | \ 

(1) .圆点字符,用来匹配任意字符

               如果我们在正则表达式中包含它,它将会匹配在此位置的任意一个字符。  

huiubantu@ubuntu:~$ grep -h .zip dirlist*.txt   会输出类似binzip2   bzip2 gzip

(2)^插入符号和$美元符号会被看做是锚(定位点)

              这意味着正则表达式只有在文本行的开头或末尾被找到时,才算发生一次匹配。

huiubantu@ubuntu:~$ grep -h ^zip dirlist*.txt      会输出类似zip zipcloak zipgrep zipinfo,就是说前边被占有,不能匹配
huiubantu@ubuntu:~$ grep -h zip$ dirlist*.txt      会输出类似bzip binzip lockzip,就是说后边已被占有,不能匹配上字符

(3)中括号表达式和字符类

    通过使用中括号[],我们能够从一个指定的字符集合中匹配一个单个的字符

huiubantu@ubuntu:~$ grep -h [bg]zip dirlist*.txt   会输出bzip bzip2recover gzip2 

    如果在正则表示式中的第一个字符(否则不生效)是一个插入字符,则剩余的字符被看作是不会在给定的字符位置出现的字符集合。

huiubantu@ubuntu:~$ grep -h [^bg]zip dirlist*.txt  会输出bunzip2 funzip

(4)传统的字符区域,用-简写

如,在我们的列表中找到每个以大写字母开头的文件,以下边这种方式写比较麻烦

huiubantu@ubuntu:~$ grep -h ^[ABCDEFGHIJKLMNOPQRSTUVWXYZ] dirlist*.txt   

      我们可以用一个三字符区域来缩写26个字母,如下

huiubantu@ubuntu:~$ grep -h ^[A-Z] dirlist*.txt

另外,比较以下两种写法:

huiubantu@ubuntu:~$ grep -h [A-Z] dirlist*.txt   输出包含一个大写字母的文件名
huiubantu@ubuntu:~$ grep -h [-AZ] dirlist*.txt   输出表达式中包含一个连字符或者大写字母A或者大写字母Z的文件名

 

三、POSIX字符集

   UNIX刚开发时,使用ASCII字符,ASCII字符中,前32个字符(数字0-31)是控制码(例如tabs,backspaces,和回车),再有32个字符(32-63)包含打印字符,包含大多数的标点符号和数字0到9;再随后的32个字符(64-95)包含大写字符和一些更多的标点符号。最后的31个字符(96-127)包含小写字母和更过的标点符号。

系统使用这种排序规则的ASCII:  ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

 

17 正则表达式(重点)

标签:

原文地址:http://www.cnblogs.com/xiaoxiaohui2015/p/5792603.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!