您的位置:首页 > 博客中心 > 网络系统 >

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

时间:2022-04-03 11:58

  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.正则表达式多了一个或者|

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

  

本文出自 “” 博客,请务必保留此出处

本类排行

今日推荐

热门手游