python入门 第十一天 正则

  • 正则表达式
    • 普通字符:
      import re
      # 完全匹配
      r = re.findall('xin', "wewqefrexinminwdwwrffdasw")
      print(r) # ['xin']
      
    • 元字符:
      #  . : 通配符(代指一个字符)
      r = re.findall('xin.i', "wewqefrexinminwdwwrffdasw")  
      print(r) # ['xinmi']
      #  ^ : 匹配开头
      r = re.findall('^xin', "xinwewqefrexinminwdwwrffdasw")  
      print(r) # ['xin']
      #  $ : 匹配结尾
      #  * : 匹配前面出现0到多次
      r = re.findall('xin*', "wwwwwxinnnnnnx")   
      print(r) # ['xinnnnnn']
      #  + : 匹配前面出现1到多次
      #  ? : 匹配前面0到1次 
      #  {} :   重复
      r = re.findall('xin{3}', "wwwwwxinnnnnnx")  
      print(r) # ['xinnn']  
      
    • 字符集
       #  [] : 字符集(元字符在字符集中是普通字符)
       r = re.findall('a[bc]d', "wwwabd")  
       print(r) # ['abd']    
       r = re.findall('a[bc]d', "wwwacd")  
       print(r) # ['acd'] 
      
      图片.png

      图片.png

      图片.png
  • 正则补充
    • python使用正则re模块
      import re
      # re.match()    从头匹配
      # 简单的匹配方式
      # 无分组
      origin = "hello xinmin bcd xinmin lge xin acd 11"
      r = re.match("h\w+", origin)
      print(r.group()) # 获取匹配到的所有结果 hello
      print(r.groups())  # 获取模型中匹配到的分组结果 ()
      print(r.groupdict()) # 获取模型中匹配到的分组中所有执行了key的组 {}
      # 分组匹配的方式
      # 有分组
      origin = "hello xinmin bcd xinmin lge xin acd 11111"
      r = re.match("(h)(\w+)", origin)
      ret = re.match("(?Ph)"(?P\w+), origin)
      print(r.group()) # 获取匹配到的所有结果 hello
      print(r.groups())  # 获取模型中匹配到的分组结果 ('h', 'ello')
      print(r.groupdict()) # 获取模型中匹配到的分组中所有执行了key的组 {}
      print(ret.group()) # 获取匹配到的所有结果 hello
      print(ret.groups()) # 获取模型中匹配到的分组结果 ('h', 'ello')
      print(ret.groupdict())  # 获取模型中匹配到的分组中所有执行了key的组 {'n1': 'h', 'n2': 'ello'}
      # re.search()   用法与match相同,但是是浏览全部字符串,匹配第一个符合规则的字符串
      # re.findall()     将匹配到的所有内容都放置在一个列表中 
      # re.split()
      # re.sub()
      
      import re
      # findall
      n = re.findall("\d+\w\d+", "a2b3c4d5")
      print(n) # ['2b3', '4d5']
      # 无分组
      origin = "hello xinmin bcd xinmin lge xin acd 11111"
      r = re.findall("x\w+", origin)
      r1 = re.findall("x(\w+)", origin)
      print(r) # ['xinmin', 'xinmin', 'xin']
      print(r) # ['inmin', 'inmin', 'in']
      # split 分割
      origin = "hello xinmin bcd xinmin lge xin acd 2451"
      origin.spilt('x')
      n = re.split('x\w+', origin, 1) 
      n1 = re.split('x\w+', origin) 
      print(n) # ['hello', 'bcd xinmin lge xin acd 2451']
      print(n1) # ['hello', 'bcd', 'lge', 'acd 2451']
      
    • 计算器


      图片.png
      • sub :替换
      origin = "dsdfgdsfewsdf3455467dsfds455677y988dfd"
      new_str = re.sub("\d+", "kkk', origin)
      print(new_str)
      

你可能感兴趣的:(python入门 第十一天 正则)