一个正则表达式是由普通字符和特殊字符组成的文字模式,将某个字符模式与所搜索的字符串进行匹配。简单的说,就是用来搜索匹配的一个很好的工具。

 正则表达式分为:基本正则表达式和扩展正则表达式两类


基本正则表达式的元字符如下:
  . 匹配任意单个字符
   *匹配前一个字符的任意次
  .*任意长度的任意字符
  []指定范围内的任意单个字符

  a\{m,n\}a这个字符至少出现m次,最多出现n
  a\{m,\}a这个字符至少出现m次,
  a\{0,n\}a这个字符最多出现n
  ?匹配前一个字符出现0次或1其次

锚定符:
  
     ^锚定行首
    $锚定行尾
   ^$锚定空白行
   \<锚定词首
   \>锚定词尾
引用:
  \(\) 
 
接下来给每个元字符配备一个例子
“ . ”
上图“  . ”  匹配任意单个字符,rootr/ft中的o/f,都属于任意单个字符

“ * ”
上图星号“ * ”匹配b任意次,也可以是0次,如图中的ac

“ .* ”
上图是以r开头t结尾,中间是任意字符
第一行开头就是root,已经匹配完了,但是最后又以t结尾,这个称为贪婪模式,尽量匹配到最长

上图表示以r开头以t结尾中间为任意小写字母

    \{m,n\}
表示图上 b 至少显示 1 次,最多显示两次的行

\{m,\}
     上图表示以r开头t结尾,中间的小写字母至少出现两次的行

\{0,n\}
表示b至少出现0次,最后出现2次的行
grep的选项
     -v:  对结果去反
例: 
这个是空白至少出现1次的,图中红色标记都是空白
反之  -v  grep  -v  "[[:space:]]\{1,\}"  /etc/passwd

锚定符:
^
上图中显示以root开头的行
 
$
显示以n结尾的行

^$
显示空白行
 
\<
显示以r开头的单词

\>
显示以r结尾的单词

\(\)
上图a为文件    1用来匹配括号里的l..e  
表示以l..e开头后面跟任意字符任意次,并且以r结尾的行

扩展正则表达式元字符:
    ( )
    {}
    +: 次数匹配,匹配其前的字符至少1次;
    |或者 

使用扩展正则表达式格式必须为grep  -E   或者egrep 

( )
和正则表达式中的\\)效果一样

{}
    
    和 \{m,\} 效果一样

+

匹配b至少出现一次
 
|
显示以dD开头的dog 
 
END