zoukankan      html  css  js  c++  java
  • 正则表达式

    动态模糊匹配

    aa= "<b>注销</b>"
    t=re.findall(r"<b>(.+?)</b>",aa)
    print(t)
    打印
    ['注销']

    re.match函数

    re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。

         aa= "ChenRonghua123"
            t=re.match("^Chen",aa)
            print(t)
            print(t.group())
    打印

    <_sre.SRE_Match object; span=(0, 4), match='Chen'>
    Chen

      

        aa= "Chen321Ronghua123"
        t=re.match("Chen",aa)
        print(t)
        print(t.group())
    打印

    <_sre.SRE_Match object; span=(0, 4), match='Chen'>
    Chen

      

         
        /d代表一个数字,如果代表多个数字加上+号
         aa= "Chen321Ronghua123" t=re.match("^Chend",aa) print(t) print(t.group())
    打印

    <_sre.SRE_Match object; span=(0, 5), match='Chen3'>
    Chen3

        aa= "Chen321Ronghua123"
        t=re.match("^Chend+",aa)
        print(t)
        print(t.group())
    打印

    <_sre.SRE_Match object; span=(0, 7), match='Chen321'>
    Chen321

      

         .的用法,匹配任意
      
         aa= "Chen321Ronghua123" t=re.match(".",aa) print(t) print(t.group())
    打印

    <_sre.SRE_Match object; span=(0, 1), match='C'>
    C

          

        aa= "Chen321Ronghua123"
        t=re.match("^.",aa)
        print(t)
        print(t.group())
    打印

    <_sre.SRE_Match object; span=(0, 1), match='C'>
    C

        aa= "Chen321Ronghua123"
        t=re.match("^.+",aa)
        print(t)
        print(t.group())
    打印

    <_sre.SRE_Match object; span=(0, 17), match='Chen321Ronghua123'>
    Chen321Ronghua123

      

    re.search方法

    re.search 扫描整个字符串并返回第一个成功的匹配。

         aa= "Chen321Ronghua123"
            t=re.search("R.+a",aa)
            print(t)
            print(t.group())
    打印

    <_sre.SRE_Match object; span=(7, 14), match='Ronghua'>
    Ronghua

      

         $匹配字符串的末尾
         aa= "Chen321Ronghua123a" t=re.search("a$",aa) print(t) print(t.group())
    打印

    <_sre.SRE_Match object; span=(17, 18), match='a'>
    a

        [a-z]匹配任意小写字母
        aa= "Chen321Ronghua123a"
        t=re.search("R[a-z]",aa)
        print(t)
        print(t.group())
    打印

    <_sre.SRE_Match object; span=(7, 9), match='Ro'>
    Ro

        

        aa= "Chen321Ronghua123a"
        t=re.search("R[a-z]+",aa)
        print(t)
        print(t.group())
    打印

    <_sre.SRE_Match object; span=(7, 14), match='Ronghua'>
    Ronghua

        aa= "Chen321Ronghua123a"
        t=re.search("R[a-z]+a",aa)
        print(t)  
        print(t.group())
    打印

    <_sre.SRE_Match object; span=(7, 14), match='Ronghua'>
    Ronghua

        [A-Z]

        aa= "Chen321RongAhuaRonghua123a"
        t=re.search("R[a-z]+a",aa)  
        print(t)
        print(t.group())
    打印

    <_sre.SRE_Match object; span=(15, 22), match='Ronghua'>
    Ronghua

        aa= "Chen321RongAhuaRonghua123a"
        t=re.search("R[a-zA-Z]+a",aa)
        print(t)
        print(t.group())
    打印

    <_sre.SRE_Match object; span=(7, 22), match='RongAhuaRonghua'>
    RongAhuaRonghua

      

         aa= "1123#hello#"
            t=re.search("#.+#",aa)
            print(t)
            print(t.group())
    打印

    <_sre.SRE_Match object; span=(4, 11), match='#hello#'>
    #hello#

      

         ?匹配前一个字符1次或者0次
         aa= "alex" t=re.search("a?",aa) print(t) print(t.group())
    打印

    <_sre.SRE_Match object; span=(0, 1), match='a'>
    a

     
        aa= "aalex"
        t=re.search("a?",aa)
        print(t)
        print(t.group())
    打印

    <_sre.SRE_Match object; span=(0, 1), match='a'>
    a

        aa= "aaaaaalex"
        t=re.search("aaa?",aa)
        print(t)
        print(t.group())
    打印

    <_sre.SRE_Match object; span=(0, 3), match='aaa'>
    aaa

    
    
        aa= "aalexaaa"
        t=re.search("aaa?",aa)
        print(t)
        print(t.group())
    打印

    <_sre.SRE_Match object; span=(0, 2), match='aa'>
    aa

    
    
        aa= "alexaaa"
        t=re.search("aaa?",aa)
        print(t)
        print(t.group())
    打印

    <_sre.SRE_Match object; span=(4, 7), match='aaa'>
    aaa

        aa= "aaexaaa"
        t=re.search("aal?",aa)
        print(t)
        print(t.group())
    打印

    <_sre.SRE_Match object; span=(0, 2), match='aa'>
    aa

     
         
          {}大括号,匹配n个前面表达式
         aa= "aalx2a345a" t=re.search("[0-9]{3}",aa) #匹配3位数,re{ n} print(t) print(t.group())
    打印

    <_sre.SRE_Match object; span=(6, 9), match='345'>
    345

      

    findall

    在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。

         aa= "aa1x2a345a"
            t=re.findall("[0-9]{1,3}",aa) #匹配1-3位数,re{ n, m}
            print(t)
    打印
    ['1', '2', '345']

        aa= "aa1x2a3456a"
        t=re.findall("[0-9]{1,3}",aa) #匹配最大为3位数,所以3456进行了拆分
        print(t)
    打印
    ['1', '2', '345', '6']
     
         “|”管道符,还有或的意思
         aa= "ABCBabcCD" t=re.search("abc|ABC",aa) print(t) print(t.group())
    打印

    <_sre.SRE_Match object; span=(0, 3), match='ABC'>
    ABC

      

        aa= "ABCBabcCD"
        t=re.findall("abc|ABC",aa)
        print(t)
    打印

    ['ABC', 'abc']

      

         ()分组匹配
         aa= "alexabcc" t=re.search("abc{2}",aa) print(t) print(t.group())
    打印

    <_sre.SRE_Match object; span=(4, 8), match='abcc'>
    abcc

      

        aa= "alexabcabcc"
        t=re.search("(abc){2}",aa)
        print(t)  
        print(t.group())
    打印

    <_sre.SRE_Match object; span=(4, 10), match='abcabc'>
    abcabc

      

         匹配管道符“|”
         aa= "alexabcabc|" t=re.search("(abc){2}|",aa) print(t) print(t.group())
    打印

    <_sre.SRE_Match object; span=(4, 11), match='abcabc|'>
    abcabc|

        aa= "alexabcabc||=||="
        t=re.search("(abc){2}||=",aa)
        print(t)
        print(t.group())
    打印

    <_sre.SRE_Match object; span=(4, 13), match='abcabc||='>
    abcabc||=

        aa= "alexabcabc||=||="
        t=re.search("(abc){2}(||=){2}",aa)
        print(t)
        print(t.group())
    打印

    <_sre.SRE_Match object; span=(4, 16), match='abcabc||=||='>
    abcabc||=||=

      

        A以什么开头,同^,以什么结尾,同&      
         aa= "213a" t=re.search("A[0-9]+[a-z]",aa) #以数字开头,以小写字母结尾 print(t) print(t.group())
    打印

    <_sre.SRE_Match object; span=(0, 4), match='213a'>
    213a

      

            D匹配非数字的任意字符,包括特殊字符
         aa= "213$ -a" t=re.search("D+",aa) print(t) print(t.group())
    打印

    <_sre.SRE_Match object; span=(3, 7), match='$ -a'>
    $ -a

      

         w匹配[A-Z][a-z][0-9],匹配字符和数字
         aa= "213aaa$ -a" t=re.search("w+",aa) print(t) print(t.group())
    打印

    <_sre.SRE_Match object; span=(0, 6), match='213aaa'>
    213aaa

      

         w匹配非[A-Z][a-z][0-9],只匹配特殊字符
         aa= "213aaa$ - *("
            t=re.search("W+",aa)
            print(t)
            print(t.group())
    打印

    <_sre.SRE_Match object; span=(6, 12), match='$ - *('>
    $ - *(

      

         s匹配空白等
    	
    等字符
         aa= "213aaa$ " t=re.search("s+",aa) print(t)
    打印
    <_sre.SRE_Match object; span=(7, 13), match='    '>

      

         赋值字典?P
         aa= "213aaa" t=re.search("(?P<id>[0-9]+)",aa) print(t) print(t.groupdict())
    打印

    <_sre.SRE_Match object; span=(0, 3), match='213'>
    {'id': '213'}

      

         aa= "aaa565fss888"
            t=re.search("(?P<id>[0-9]+)(?P<name>[a-zA-Z]+)",aa)
            print(t)
            print(t.groupdict())
    打印

    <_sre.SRE_Match object; span=(3, 9), match='565fss'>
    {'id': '565', 'name': 'fss'}

      

         身份证号解析
         aa= "220802198812011538" t=re.search("(?P<province>[0-9]{4})(?P<city>[0-9]{2})(?P<birthday>[0-9]{4})",aa) print(t) print(t.groupdict())
    打印

    <_sre.SRE_Match object; span=(0, 10), match='2208021988'>
    {'city': '02', 'birthday': '1988', 'province': '2208'}

      

    re.split

    split 方法按照能够匹配的子串将字符串分割后返回列表

         aa= "dd33ff55hh4466hhe"
            t=re.split("[0-9]+",aa)
            print(t)
    

      打印

    ['dd', 'ff', 'hh', 'hhe']

    检索和替换

    Python 的re模块提供了re.sub用于替换字符串中的匹配项

         aa= "dd33ff55hh4466hhe"
            t=re.sub("[0-9]+","|",aa)
            print(t)
    

      打印

    dd|ff|hh|hhe

         re.I忽略大小写
         aa= "dddSS" t=re.search("[a-z]+",aa,flags=re.I) print(t) print(t.group())

      打印

    <_sre.SRE_Match object; span=(0, 5), match='dddSS'>
    dddSS

         aa= "dddSS
    fffk
    hhhhf"
            t=re.search("[a-z]+f$",aa,flags=re.I)
            print(t)
            print(t.group())
    

      打印

    <_sre.SRE_Match object; span=(11, 16), match='hhhhf'>
    hhhhf

         re.M 多行模式
         aa= "AAa fffk hhhhf" t=re.search("^f",aa,flags=re.M) print(t) print(t.group())

      打印

    <_sre.SRE_Match object; span=(4, 5), match='f'>
    f

    aa = "Calc Result:6,Calc Resultis:4"
    b = re.findall("Calc Result:(.*),Calc Resultis:(.*)",aa)
    print(b)
    
    [('6', '4')]
    

      

  • 相关阅读:
    20155302 《信息安全系统设计基础》课程总结
    2017-2018-1 20155302 第十四周作业
    2017-2018-1 20155302 第十三周作业
    2017-2018-1 20155302 实验五 通信协议设计
    20155302实验一
    2017-2018-1 20155302 实验四 外设驱动程序设计
    2017-2018-1 20155302 《信息安全系统设计基础》第11周学习总结
    # 2017-2018-1 20155302 课下实践IPC及课上补充
    2017-2018-1 20155302 实验三 实时系统
    # 2017-2018-1 20155302 《信息安全系统设计基础》第9周学习总结
  • 原文地址:https://www.cnblogs.com/zhangbao003/p/8862385.html
Copyright © 2011-2022 走看看