您的位置:首页 > 运维架构 > Linux

Linux基础(10)论grep 与egrep的区别

2016-07-14 09:48 330 查看
egrep或者grep -E与grep相比进行文本匹配的时候使用的扩展的正则表达式,那么扩展的正则表达式与正则表达式有什么区别呢?
1基本的正则表达式:
字符匹配:
.: 任意单个字符
[]: 某一字符集中的单个字符 例如[0-9]表示任意个位数
[^]:不属于某一字符集中的单个字符 例如[^[:space:]]表示任意非空白字符

次数匹配:
*:任意次
\?: 0或1次
\{m,n\}:至少m次,至多n次;

.*: 任意长度的任意字符

锚定:
^: 行首锚定
$: 行尾锚定
\<, \b:词首
\>, \b:词尾

元组引用:
\(\)
\1, \2, \3, ...
====================================================================================
2.扩展的正则表达式

字符匹配:
.
[]
[^]

次数匹配:
*: 匹配前面的字符任意多次
?: 匹配前面的字符0次或者1次
+: 匹配其前面的字符至少1次
{m,n} 匹配前面的字符至少m次,至多n次 注意:与基本正则表达式相比 不需要再转义

位置锚定:
^ 行首
$ 行尾
\< 或者\b ### 词首
\> 或者 ###\b 词尾

元组:
():元组 注意 :与基本正则表达式相比,不需要再转义
\1, \2, \3, ...

或者
|: or
注意:这是扩展正则表达式才有的功能 若要grep支持,必须用grep -E
注意: 用于选择的内容必须加入到括号中
(C|c)at: Cat或cat
C|cat :C 或者cat

由比较可知,基本正则表达式与扩展正则表达式的区别在于
1.次数匹配上,扩展正则表达式多了一个+代表匹配前面的字符至少一次 相当于\{1,\}
2.扩展正则表达式{m,n}不再需要转转义
3.扩展正则表达式的分组()也不再需要转义

4.正则表达式多了一个或者|
那么我们在文本模式匹配的时候可以考虑使用扩展的正则表达式,从而避免使用过多的转义字符\

本文出自 “厚积薄发” 博客,请务必保留此出处http://joedlut.blog.51cto.com/6570198/1826252
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: