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

对正则表示式及grep的总结

时间:2014-07-13 14:43:11      阅读:253      评论:0      收藏:0      [点我收藏+]

标签:正则表达式   grep egrep   

                 正则表达式学习总结

 

 

什么是正则表达式

       正则表达式,又称正规表示法常规表示法英语Regular Expression,在代码中常简写为regexregexpRE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。

 

一.正则表达式的各个元字符

     1)字符匹配:

                . -->表示匹配任意单个字符

                    [] --> 匹配指定范围内的任意单个字符

                    [^]:取反

     2)次数匹配元字符:用于实先制动其前面的字符所能出现的次数

                    * -->任意长度,他前面的字符可出现任意次    

                    \? -->1次或0次,其前面的字符可有可无     

                    \{m\} -->m,表示他前面的字符要出现m

                    \{m,n\} -->至少m次,至多n 注:m最小为零不可省略,n无上限可省略

                     .* 任意长度的任意字符                                                                                引用用 \1

     3)位置锚定

                   ^  行首锚定  $ 行尾锚定     ^$ 空白行

                                  不包含特殊子字符的连续字符所组成的字符串:

                    \<  词首   \>  词尾        都可以用\b代替

     4)分组:\(\)

                   括号有编号:\n 引用第n个括号所匹配的内容,不是模式本身  

 

二.grep的常用选项

       -v: 反向选取

            -o : 显示被模式匹配的字串可不是整行

            -i : ignore-case,忽略大小写

            -E: 支持使用正则扩展表达式

            -A: 现实匹配到内容的前几行

            -B : 显示匹配到内容的后几行

            -C : 显示匹配到内容的前后几行

 

 

三.各选项和正则表达式的配合使用

grep [option] ...‘PATTREN‘ FILE  --color=auto

1.       grep –v “#” /etc/fstab   显示没有“#”的行 -v取反

bubuko.com,布布扣

 

2.       grep –o \<user1\>/etc/passwd  user1被锚定词首词尾–o表示不显示整行

bubuko.com,布布扣 

3.       grep –A2  “^zhengzhou\>” /etc/passwd   Zhengzhou被锚定了行首–A2表示显示下面两行

bubuko.com,布布扣

4.       grep –B2  “^zhengzhou\>” /etc/passwd   -B2表示显示上两行

 bubuko.com,布布扣

5.       grep –C2  “^zhengzhou\>” /etc/passwd   -B2 表示显示上下两行

bubuko.com,布布扣

6.       grep “tuser*\(.\)\3”/etc/passwd   r*表示r可以出现任意次 \.\)表示“.”被分组  \3表示分组被引用了三次bubuko.com,布布扣


7.       grep “\(user\).*\1” /etc/passwd  .*表示任意字符任意长度

bubuko.com,布布扣

8.       grep “b\{2,4\}” /etc/fstab  b\{2,4\} 表示b最少出现2次最多出现4次的行

bubuko.com,布布扣

 

 

 

四.Grep的扩展egrep grep –E

- grep 之下不支持  这两种 modifier,  egrep 则可.      

 

?: 匹配其前面的字符01次;

+: 匹配其前面的字符至少1

|:表示或关系,ab|bcb表示abbcb

):将部分内容合成一个单元组。如ab|bcb等,()的好处是可以对小组使用 + ? * 等。

 

Grep “tuser|^z” /etc/passwd  查找包含tuser或者以z开头的行

bubuko.com,布布扣

个人觉得需要使用egrep是可以用grep –E代替,不仅可以是用egrep的扩展功能还可以减少有出错的概率


本文若有错误我意思模糊的地方请各位指正,谢谢!

本文出自 “菜鸟前行之路” 博客,请务必保留此出处http://8381039.blog.51cto.com/8371039/1437341

对正则表示式及grep的总结,布布扣,bubuko.com

对正则表示式及grep的总结

标签:正则表达式   grep egrep   

原文地址:http://8381039.blog.51cto.com/8371039/1437341

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