zoukankan      html  css  js  c++  java
  • 正则表达式(2):连续次数匹配

    测试文件regex.txt如下

    [root@192 Zhengze]# cat -n regex.txt
    a a
    aa
    a aa
    bb
    bbb
    c cc ccc
    dddd d dd ddd
    ab abc abcc
    ef eef eeef
    

    搜索2个a

    [root@192 Zhengze]# grep --color -n "aa" regex.txt
    2:aa
    3:a aa
    

    等同于如下

    [root@192 Zhengze]# grep --color -n "a{2}" regex.txt
    2:aa
    3:a aa
    

    但是多于2个也会被匹配到

    [root@192 Zhengze]# grep --color -n "b{2}" regex.txt
    4:bb
    5:bbb
    

    通过锚定精确匹配到2个b

    [root@192 Zhengze]# grep --color -n "<b{2}>" regex.txt
    4:bb
    


    z{x,y} 表示z字符至少连续出现x次,最多连续出现y次

    [root@192 Zhengze]# grep --color -n "d{2,4}" regex.txt
    7:dddd d dd ddd
    

    那么{x,}表示之前的字符至少连续出现x次,或者连续出现次数大于x次,即可被匹配到

    {,y}表示之前的字符至多连续出现y次,或者连续出现次数小于y次,即可被匹配到,最小次数为0次,换句话说,之前的字符连续出现0次到y次,都会被匹配到。

    [root@192 Zhengze]# grep --color -n "d{2,}" regex.txt
    7:dddd d dd ddd
    

    ab都小于2,cc小于等于2,所以被匹配到了

    [root@192 Zhengze]# grep --color -n "abc{,2}" regex.txt
    8:ab abc abcc

    *表示之前的字符连续出现任意次数(包括0次)

    [root@192 Zhengze]# grep --color -n "e*f" regex.txt
    9:ef eef eeef
    

    d连续出现了0次,其他也符合条件所以被输出了

    [root@192 Zhengze]# grep --color -n "d*" regex.txt
    1:a a
    2:aa
    3:a aa
    4:bb
    5:bbb
    6:c cc ccc
    7:dddd d dd ddd
    8:ab abc abcc
    9:ef eef eeef
    10:
    

    通配符中,*表示匹配任意长度的任意字符

    在正则表达式中,使用".*"表示任意长度的任意字符

    今天的学习是为了以后的工作更加的轻松!
  • 相关阅读:
    位记录——Windows 7已安装Sublime Text 3、cynwin、SublimeClang
    尺度空间(Scale space)理论
    D3DXMatrixMultiply 函数
    素数推断算法(高效率)
    去除win7 64位系统桌面图标小箭头
    Bag标签之中的一个行代码实行中文分词实例1
    7个最好的免费杀毒软件下载
    利用Excel批量高速发送电子邮件
    Hibernate Criterion
    IOS新手教程(二)-控制流
  • 原文地址:https://www.cnblogs.com/tz90/p/13143317.html
Copyright © 2011-2022 走看看