Python正则表达式(4)---字符串匹配分组

  • Python正则表达式(4)---字符串匹配分组
    •  
      字符 功能
      | 匹配左右任意一个表达式(或)
      (ab) 将括号中字符作为一个分组(与)
      \num 引用分组num匹配到的字符串
      (?P) 分组起别名
      (?P=name) 引用别名为name分组匹配到的字符串
       
       
       
       
       
       
       
       
       
       
       
    •  
       
       
      • 示例1:
      • 需求:匹配出0-100之间的数字
        • import re
          ret = re.match("[1-9]?\d","8")
          print(ret.group()) #8
          
          ret = re.match("[1-9]?\d","78")
          print(ret.group()) #78
          
          #不正确的情况
          ret = re.match("[1-9]?\d","08")
          print(ret.group())  #0
          
          #修正之后
          ret = re.match("[1-9]?\d$","08")
          if ret:
              print(ret.group())
          else:
              print("不在0-100之间")
          
          #添加|
          ret = re.match("[1-9]?\d$|100","8")
          print(ret.group())  #8
          
          ret = re.match("[1-9]?\d$|100","78")
          print(ret.group())  #78
          
          ret = re.match("[1-9]?\d$|100","08")
          #print(ret.group())  #不在0到100之间,故错
          
          ret = re.match("[1-9]?\d$|100","100")
          print(ret.group()) #100
          
          #运行结果
          8
          78
          0
          不在0-100之间
          8
          78
          100

           

      • 示例2:()  
      • 需求:匹配出163、126、qq邮箱
      • 示例3:\
      • 需求:匹配出hh
        • import re
          
          #能够完成对正确的字符串的匹配
          ret = re.match("[]*\w","hh")
          print(ret.group())    #hh
          
          #如果遇到非正常的html格式字符串,匹配出错
          ret = re.match("[]*\w","hh")
          print(ret.group())  #hh
          
          #正确的理解思路 :如果在第一对<>中是什么,按理来说后面的那对<>中就应该是什么
          
          #通过引用分组中匹配到的数据即可,但是要注意是元字符串,即类似r""这种格式
          ret = re.match(r"<([a-zA-Z]*)>\w*", "hh")
          print(ret.group())  #hh
          
          
          #因为2对<>中的数据不一致,所以匹配不出来
          test_label = "hh"
          ret= re.match(r"<([a-zA-Z]*)>\w*",test_label)
          if ret:
              print(ret.group())
          else:
              print("%s 这是一个不对的标签" % test_label)    #hh 这是一个不对的标签
          
          
          #运行结果
          hh
          hh
          hh
          hh 这是一个不对的标签
      •  模式修正符
        •  re.S  让.也可以匹配多行
        •  re.I   让匹配时忽略大小写

你可能感兴趣的:(Python正则表达式(4)---字符串匹配分组)