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:
    

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

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

    今天的学习是为了以后的工作更加的轻松!
  • 相关阅读:
    『GoLang』接口
    『GoLang』结构体与方法
    『GoLang』包
    『GoLang』字典Map
    『GoLang』数组与切片
    利用griddata进行二维插值
    HTML 标签的 for 属性
    python之成像库pillow
    Python之模块IO
    StringIO和BytesIO
  • 原文地址:https://www.cnblogs.com/tz90/p/13143317.html
Copyright © 2011-2022 走看看