①行的起始和结束
^脱字符:匹配行的开头。
$美元:匹配行的结尾。
例子:
^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 神奇的转义符
如果我们需要匹配的字符本身就是元字符,就需要使用 "\" 来转义这个字符,如 "\." ,将点号转义。
阅读(2665) | 评论(0) | 转发(0) |