zoukankan      html  css  js  c++  java
  • Python中模块之re的功能介绍

                                                  re模块的功能介绍

    1. 方法

    1. match

      从开头开始查找

      方法:re.match(pattern,string,flags=0)
      返回值:<class '_sre.SRE_Match'>(找到) or None(没找到)
      例如:m = re.match('e','excel')
           print(m.group())
       >>> 'e'
      #该方法只能从开头开始查,如果查找的内容不是开头或者不存在时,返回值为None,验证时调用group方法时将报错,如果找到了,也只有一个,验证时可以使用group方法进行获取查找的内容。
      
    2. search

      全文搜索,只获取第一个

      方法:re.search(pattern,string,flags=0)
      返回值:<class '_sre.SRE_Match'>(找到) or None(没找到)
      例如:s = re.search('ba','adbadfsbadsf')
           print(s.group())
       >>> 'ba'
      #该方法与上述方法类似,不过该方法查找的范围是全部内容,但返回只返回查找到的第一个,验证方法同上。
      
    3. findall

      返回找到的所有内容(全文搜索)

      方法:re.findall(pattern,string,flags=0)
      返回值:list
      例如:print(re.findall('s','afadsfdsf'))
       >>> ['s','s']
      #该方法不需要通过group方法进行验证,找不到时返回一个空列表。
      
    4. split

      搜索全文并进行切片

      方法:re.split(pattern,string,maxsplit=0,flags=0)
      返回值:list
      例如:print(re.split('ax','sdaxfsfsaxdfsax'))
       >>> ['sd', 'fsfs', 'dfs', '']
      #指定内容作为分割字符串的点进行切片,如果指定内容开头或者结果则结果为列表中的一个空字符串,同时也可以指定切片的最大次数。
      
    5. sub

      替换

      方法:re.sub(pattern,repl,string,count=0,flags=0)
      返回值:str
      例如:print(re.sub('a','23','sdfafasdf'))
       >>> 'sdf23f23sdf'
      #该方法默认全文替换,可以指定替换次数,如果查找的内容不存在时,将返回原字符串。
      
    6. fullmatch

      完全匹配搜索

      方法:re.fullmatch(pattern,string,flags=0)
      返回值:<class '_sre.SRE_Match'>(找到) or None(没找到)
      例如:fm = re.fullmatch('sa','sa')
           print(fm.group())
       >>> 'sa'
      #该方法与match类似,只不过,该方法搜索的匹配内容必须和搜索的原文一样,否则都认为是未找到。
      
    7. subn

      替换并返回元祖

      方法:re.subn(pattern,repl,string,count=0,flags=0)
      返回值:tuple
      例如:print(re.subn('as','3','sfsasa,sdf'))    
       >>> ('sfs3a,sdf', 1)
      #该方法把替换后的字符串作为元祖的第一个元素,第二个元素为替换的次数,如果未替换,则次数为0
      
    8. finditer

      查找所有并把返回值生成一个迭代器

      方法:re.finditer(pattern,string,flags=0)
      返回值:<class 'callable_iterator'>
      例如:f_iter = re.finditer('a','adsfasfa')
           find_l = [i.group() for i in f_iter]
           print(find_l)
       >>> ['a', 'a', 'a']
      #利用列表推导式把获取到的结果作为列表进行返回。
      

    2. 表达式符号

    1. 常用符号如下:

          符号                      表示
      1. '.'              默认匹配除
      之外的任意一个字符,包括字母、数字、中文、特殊字符等,若flags指定为S(DOTALL),则匹配任意字符,包括换行符。
      2. '^'              默认匹配字符开头,若flags指定为M(MULTILINE),可以匹配多行中的开头(如:'^a','
      abd
      saf')。
      3. '$'              默认匹配字符结尾,若flags指定为M(MULTILINE),可以匹配多行中的结尾(如:'$ab','asdfab
      dsa
      ')。
      4. '*'              匹配字符0次或多次
      5. '+'              匹配字符1次或多次
      6. '?'              匹配字符0次或1次
      7. '{m}'            匹配字符m次
      8. '{n,m}'          匹配字符n次到m次
      9. '|'              匹配字符二选一
      10. '(...)'         分组匹配
      11. 'A'            匹配字符开头,与'^'一样
      12. ''            匹配字符结尾,与'$'一样
      13. 'd'            匹配数字[0,9]
      14. 'D'            匹配非数字
      15. 'w'            匹配字母、数字、中文,除特殊字符
      16. 'W'            匹配特殊字符,包括
      
      17. 's'            匹配空白字符(即' ')、	、
      、
      
      18. '(?P<name>)'    分组匹配加命名
      

      第18个表达式符号'(?P)'的实例如下:

      s = re.search("(?P<province>d{2})(?P<city>d{2})(?P<county>d{2})(?P<year>d{4})","371481199306143242")
      print(s.groupdict())
          {'year': '1993', 'city': '14', 'province': '37', 'county': '81'}
      print(s.group())
          3714811993
      print(s.groups()) 
          ('37', '14', '81', '1993')
      #该表达式得到的返回值也是<class '_sre.SRE_Match'>这个类。通过验证的方法也比较多,验证获得的返回值分别为字典、字符串和元祖类型。 
      
    2. flags常用的几种关键字参数

      1. re.I(re.IGNORECASE):忽略大小写
      2. re.M(re.MULTILINE):多行模式,对'^'和'$'有所改变
      3. S(DOTALL):包含
      的匹配模式,主要用于'.'的匹配规则
      #括号内为完整输入,前面是简写。
      

      flags关键字参数的实例如下:

      1. re.I

        str1 = '
        ad23好*sd
        阿道夫dsaf
        sSD'
        f_i = re.findall('s',str1,flags=re.I)
        print(f_i)
            ['s', 's', 's', 'S']
        #如果flags为默认值(即flags=0),则该返回值中不会有'S'该元素。
        
      2. re.M

        str1 = '
        ad23好*sd
        阿道夫dsaf
        sSD'
        f_start = re.findall('^s',str1,flags=re.M)
        print(f_start)
            ['s']
        f_stop = re.findall('f',str1,flags=re.M)
        print(f_stop)
            ['f']
        #如果flags为默认值(即flags=0),则该返回值应为空列表。
        
      3. re.S

        str1 = '
        ad23好*sd
        阿道夫dsaf
        sSD'
        s_any = re.search('.',str1,flags=re.S)
        print(s_any.group())
        #该打印的结果是空,由于验证时未报错,说明是有匹配到'
        '换行符,如果flags为默认值(即flags=0),则上述验证将报错。
  • 相关阅读:
    vue axios接口封装、Promise封装、简单的axios方法封装、vue接口方法封装、vue post、get、patch、put方法封装
    vue-router 报错、:Avoided redundant navigation to current location 错误、路由重复
    微信小程序支付、小程序支付功能、小程序支付方法、微信小程序支付方法
    微信小程序热更新,小程序提示版本更新,版本迭代,强制更新,微信小程序版本迭代
    微信小程序动态修改title,动态配置title,动态配置头部,微信小程序动态配置头部
    响应式布局rem、rem方法封装、移动端响应式布局
    jquery 选项卡切换、选项卡封装、简单的jquery选项卡封装、tab切换效果
    js获取url并截取相应的字段,js解决url获取中文字段乱码问题
    微信小程序接口封装、原生接口封装、request、promise封装
    20193327《Python程序设计》实验报告三
  • 原文地址:https://www.cnblogs.com/single-boy/p/7624528.html
Copyright © 2011-2022 走看看