Linux 正则表达式

Linux 正则表达式
正则表达式:regular expression REGEXP
    基本正则表达式
      
      元字符:
    . 点:匹配任意单个字符
    []  :匹配任意指定范围内的单个字符
    [^] :匹配任意指定范围外的单个字符
    
      匹配次数:
    *  :匹配其前面的字符任意次数
    .* :表示任意长度任意字符
    \  :用来转义,转义字符
    \? :匹配其前面的字符1次或0次
    \{m,n\}:匹配其前面字符最少m次,最多n次,n可以省略,表示最多无限次,m不可以省略
    
    位置锚定:
    ^ :锚定行首,表示此字符后面的字符串必须出现在行首
    $ :锚定行尾,表示此字符前面的字符串必须出现在行尾
    ^$:表示空白行
    \<或\b:锚定词首,其后的任意字符必须作为单词的首部出现
    \>或\b:锚定词尾,其前的任意字符必须作为单词的尾部出现
    \< \>:其内的字符串必须以单个字符出现
    
    分组:
    \( \):将其内的字符串作为一个整体看待
    \n:调用前面第n个左括号以及与之对应的右括号没有匹配到的内容
    
        后向引用:将正则表达式前面的某个部分看做一个整体,在正则表达式的后面引用它
            将子表达式放在\(STRING\)内,单个模式里可包括至多9个子表达式,且可为嵌套结构
            \(ab\)\(cd\)[def]*\2\1    可以匹配到abcdcdab  abcdeeeecdab  abcdddeeffcdab
            \(why\).*\1               可以匹配一行里出现两次why
            \(["']\).*\1              匹配单引号或双引号括起来的字符串
           
    BRE运算符的优先级,从高到低
    [..] [==] [::]      用于字符排序的方括号符号
    \                   转义字符
    []                  方括号表达式
    \(\)  \n            分组与后向引用
    *  \{\}             前置单个字符重现的正则表达式
    无符号              连续
    ^ $                 位置锚定
  
    扩展正则表达式
   
        字符匹配:
        . 点:匹配任意单个字符
    []  :匹配任意指定范围内的单个字符
    [^] :匹配任意指定范围外的单个字符
    
    次数匹配:
    *  :匹配其前面的字符任意次数
    ? :匹配其前面的字符一次
    +  :匹配其前面的字符至少一次
    \{m,n\}:匹配其前面字符最少m次,最多n次,n可以省略,表示最多无限次,m不可以省略
    
    位置锚定:
    ^ :锚定行首,表示此字符后面的字符串必须出现在行首
    $ :锚定行尾,表示此字符前面的字符串必须出现在行尾
    ^$:表示空白行
    \<:锚定词首,其后的任意字符必须作为单词的首部出现
    \>:锚定词尾,其前的任意字符必须作为单词的尾部出现
    
    分组:
    \( \):将其内的字符串作为一个整体看待
    \n:调用前面第n个左括号以及与之对应的右括号没有匹配到的内容
         
    或者:| 交替
    例如 C|cat 表示C或者cat
    使用 | 时,左边的会一直扩展到运算符的左边,右边的也会一直扩展到运算符的右边
    有事 | 需要使用转义符\转义,否则可能会被理解成管道
    root@ubuntu:/home/linlin/linlin/shell# egrep root\|linlin /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    linlin:x:1000:1000:linlin's ubunto,,,:/home/linlin:/bin/bash
    
    ERE运算符优先级,由高至低
    [..] [==] [::]      用于字符对应的方括号符号
    \                   转义字符
    []                  方括号表达式
    \(\)  \n            分组与后向引用
    * + ? {}           重复前置的正则表达式
    无符号              连续
    ^ $                 位置锚定
    |                   交替
    
    POSIX字符集:
        [:alnum:]    数字字符
        [:alpha:]    字母字符
        [:blank:]    空格或Tab
        [:cntrl:]    控制字符
        [:digit:]    数字字符
        [:graph:]    非空格字符
        [:lower:]    小写字母字符
        [:upper:]    大写字母字符
        [:print:]    可显示字符
        [:punct:]    标点符号字符
        [:space:]    空白字符
        [:xdigit:]   十六进制数字

posted @ 2017-06-24 11:13  荒唐了年少  阅读(318)  评论(0编辑  收藏  举报