正则表达式:

 
  • 1、文本查找工具:grep、egrep、fgrep。egrep即grep -E 命令。该些查找工具可以查找到正则表达式所匹配的字符串,并将其所在的行显示出来。
 
   grep [options] PATTERN file1,file2……,如果在PATTERN中使用了元字符的话,则PATTERN要用引号引起来。
   grep 
       --color={auto|always}
       -v :匹配到的PATTERN不显示,未匹配到的显示;
       -i :字母不区分大小写;
       -r:在指定路径下递归搜索每一个文件去匹配PATTERN;
       -B #:匹配到的字符串的前#行也显示出来;
       -A #:匹配到的字符串的后#行也显示出来;
       -C #:匹配到的字符串的前后#行都显示出来;
       -o :只显示匹配到的串本身而非串所在的行;
       -E :支持扩展的正则表达式,即相当于egrep;
          扩展正则表达式相对于正则表达式有如下几点改变:
          1)次数匹配变成:{m,n}表示至少m次,至多n次;
          2)分组引用变成:();
          3)支持“|”来表示或者;
             eg:
                ab|cd表示或者的是ab和cd;
                ^ab|cd表示匹配到以ab开头的行和包含有cd的行;
                ^ab|^cd(即^(ab|cd))表示匹配到以ab开头的行和以cd开头的行;
          4)支持“+”来表示次数匹配,匹配1到n次;
 
   # man 7 regex:查找关于正则表达式说明的文档;
   # export GREP_COLOR='01;32' :将使用grep搜索到的PATTERN显示为粗体(01)绿色(32),";"前表示字体的格式,“;”后表示字体的颜色。
 
  • 2、正则表达式的元字符:
   ^PATTERN :行首锚定符;
 
    PATTERN$:行尾锚定符;
 
   ‘\<PATTERN’:词首锚定符;
 
   ‘PATTERN\>’:词尾锚定符;
 
   ‘\<PATTERN\>’:单词锚定符;
  
    ‘^$’:匹配空白行;
    
    [:space:]:匹配空白字符;
 
    [:alpha:]:表示字母范围匹配,必须与表示次数和做范围匹配的元字符结合使用;
 
    .:匹配任意单个字符,但其不能匹配换行符;
  
    *:匹配此前的字符0到任意次;
       eg:
          a*b 1)ab,aab,b,aaaaaab等都符合;
              2)acb,cb,db,c,d等都不符合;
 
    .*:匹配任意长度的任意字符,其工作在贪婪模式下,尽可能长的匹配符合模式的字符串;
 
    ?:匹配此前的字符0次或1次;
 
   ‘PATTERN\{m,n\}’:匹配此前的字符至少m次,至多n次;
       eg:
           1)匹配此前字符0-10次或者至多10次:PATTERN\{0,10\}
           2) 匹配此前字符至少10次:PATTERN\{10,\}
           3) 匹配此前字符10次:PATTERN\{10\}
   
    []:匹配指定范围内的任意单个字符;
       eg:
          1)匹配任意字母3-10次:
            [[:alpha:]]\{3,10\}
          2)匹配p或者q;
            [pq]
 
    [^]:匹配指定范围外的任意单个字符;
   
    \.:表示匹配点本身;
 
    \(\):
         1)引用此前出现的内容,如果是第一个括号里的内容,则\1引用,如果第二个括号里的内容,则\2引用,依此类推;
         2)做分组使用;
 
  • 3、匹配有效IP地址的扩展正则表达式,分两种情况:
       1)A、B、C三类IP地址中包含网络地址和广播地址的扩展正则表达式:
([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-1][0-9]|22[0-3])(\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){3}
       2)A、B、C三类IP地址中不包含网络地址和广播地址的扩展正则表达式:
([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-1][0-9]|22[0-3])(\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-4])){2}(\.([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-4]))