【第一章 正则表达式入门】egrep的元字符

2620阅读 0评论2014-11-03 helloclei
分类:系统运维

①行的起始和结束

^脱字符:匹配行的开头。
$美元:匹配行的结尾。
例子:
^cat$  :匹配cat这个单词。
^$  :   匹配行的开始也是行的结尾,意即匹配空行。

②字符组(或字符集)

匹配若干字符之一(字符组内部是或的关系)
例子:
gr[ae]y:匹配gray或grey。
[Ss]mith  :匹配大写的Smith或小写smith
[123456]等于[1-6] ,字符组内部的“-” 表示一个范围,叫字符组元字符。   [0-9]   [a-z]    [A-Z]
注意:多重范围内的顺序无所谓。
只有在字符组内部且不是字符组开头,“-”连字符才是元字符,否则就是个普通字符。相反 ? 和.  同样是元字符,但是在字符组内部就是普通字符。

排除型字符组

[^....]  会匹配任何未列出的字符。
例子:
[^1-6]  :匹配除了1-6以外的任何字符。

③用点号匹配任意字符

元字符 "." 用来匹配任意字符。
例子:
03.19.76   可以匹配203319 7639

④多选结构

匹配任意子表达式

“|”  是一个很简单的元字符,表示“或” 的意思。通过它可以把不通的子表达式组合成一个总表达式。
例子:
“Bob”和“Robert”是两个子表达式,“Bob|Robert”可以同时匹配其中任意一个表达式,子表达式称为“多选分支”。
          gr[ae]y         等于         gray|grey         或       gr(a|e)y

⑤egrep忽略大小写的参数 -i

egrep  -i  ‘^(From|Subject|Date):  '       mailbox-file
等于[Ff]   [Ss]   [Dd]

⑥单词分界符

是用正则表达式经常遇到的问题,期望匹配的单词包含在另一个单词中,例如cat在vocation中,某些版本的  egrep  对单词识别提供了有限的支持:这就是单词分界符\<  和   \>
例子:
\    :匹配cat这个单词。
\ cat\>     :匹配以cat结尾的单词。
\<   和   \>  被称为”元字符序列“,因为他们是多个字符组合起来的元字符,分开就不是元字符。

&&小结:



7 可选项元素

color与colour区别就是后一个单词多一个  “u”,我们可以写作  “colou?r”  ,元字符 ? 代表可选项,表示可有可无。
例子:
4th|4   等于  4(th)?

8 其他量词:重复出现

+ 和*与?的作用类似,但是匹配的次数不一样,含义如下:


规定重现次数的范围:区间

某些版本的egrep能够使用元字符序列来自定义重现次数的区间   ....{min,max} ,这称为区间量词。
例子:
[a-zA-Z]{1,5}    匹配美国的股票代码(1到5个字母)

9  括号及反向引用

括号的作用:
a)限制多选项的范围;
b)将若干字符组合成一个单元,受?和*等量词的作用;
c)记住他们包含的子表达式匹配的文本。

例子:
检查文章中重复单词出现的情况可以使用反向引用。我们先匹配任意一个单词,接下来检查后面的单词是否与它一样。
egrep  -i  '\<([a-z]+) +\1\>'   file
PS:egrep是逐行检查的,所以当第一个单词和重复的单词在下一行时就不生效了。

10  神奇的转义符

如果我们需要匹配的字符本身就是元字符,就需要使用  "\"  来转义这个字符,如  "\."   ,将点号转义。










上一篇:Linux系统find用法详解
下一篇:【第二章 入门示例扩展】