美文网首页
bash编程-正则表达式

bash编程-正则表达式

作者: yuanzicheng | 来源:发表于2017-05-09 18:52 被阅读213次

    正则表达式与通配符有部分相似之处,但正则表达式更复杂也更强大。

    通配符用于(完全)匹配文件名,支持通配符的命令有:ls、find、cp等;

    正则表达式用于在文件中(包含)匹配字符串,支持的命令有:grep、awk、sed等。

    正则表达式元字符

    正则表达式由正则表达式元字符组成,而元字符又分为基本正则表达式元字符和扩展正则表达式元字符,两者基本相同,有少许差异。

    1.基本正则表达式元字符

    1.1匹配字符
    .        匹配除换行符外任意一个字符
    []       匹配[ ]中任意一个字符,如[0-9]、[:punct:]、[:space:]
    [ ^ ]    匹配[ ]中字符以外的任意字符
    
    1.2匹配次数
    *        匹配前一个字符0次或多次,如:.* 匹配任意长度任意字符
    \?       匹配前一个字符0次或1次
    \+       匹配前一个字符1次或多次
    \{n\}    表示前面的字符匹配n次,如[1][3-8][0-9]\{9\}表示手机号
    \{n,\}   前面的字符至少出现n次,如[:digit:]\{6,\}表示6位以上数字
    \{n,m\}  前面的字符出现n-m次,如[:alpha:]\{6,8\}表示6-8位字母
    
    1.3位置锚定
    ^        匹配行首,如^hello匹配以hello开头的行
    $        匹配行尾,如$:空白行,[:space:]*$:空(白)行
    \< 或 \b 匹配词首
    \> 或 \b 匹配词尾
    \<模式\> 匹配完整单词(非特殊字符组成的连续字符),支持模式
    
    1.4分组与引用
    \(模式\) 将1个或多个字符当作一个整体处理,支持模式
    \n       第n组括号之间的模式(即分组)所匹配到的字符
    

    2.扩展正则表达式元字符

    2.1匹配字符
    .        匹配除换行符外任意一个字符
    []       匹配[ ]中任意一个字符,如[0-9]、[:punct:]、[:space:]
    [ ^ ]    匹配[ ]中字符以外的任意字符
    
    2.2匹配次数
    *        匹配前一个字符0次或多次,如:.* 匹配任意长度任意字符
    ?        匹配前一个字符0次或1次
    +        匹配前一个字符1次或多次
    {n}      表示前面的字符匹配n次,如[1][3-8][0-9]\{9\}表示手机号
    {n,}     前面的字符至少出现n次,如[:digit:]\{6,\}表示6位以上数字
    {n,m}    前面的字符出现n-m次,如[:alpha:]\{6,8\}表示6-8位字母
    
    2.3位置锚定
    ^        匹配行首,如^hello匹配以hello开头的行
    $        匹配行尾,如$:空白行,[:space:]*$:空(白)行
    \< 或 \b 匹配词首
    \> 或 \b 匹配词尾
    \<模式\> 匹配完整单词(非特殊字符组成的连续字符),支持模式
    
    2.4分组与引用
    (模式)   将1个或多个字符当作一个整体处理,支持模式
    \n       第n组括号之间的模式(即分组)所匹配到的字符
    
    2.5或
    a|b      a或者b,如 C|cat:C或cat;(c|C)at:cat或Cat
    

    相关文章

      网友评论

          本文标题:bash编程-正则表达式

          本文链接:https://www.haomeiwen.com/subject/tmxzzttx.html