zoukankan      html  css  js  c++  java
  • re 模块 分组特别说明

    关于分组优先以及 " | " 的细致练习

    from django.test import TestCase
    import re
    
    # Create your tests here.
    ret = re.findall(r"-?d+.d*|-?d+", "1-2*(60+(-40.35/5)-(-4*3))")
    print(ret)  # ['1', '-2', '60', '-40.35', '5', '-4', '3']
    
    ret = re.findall(r"-?d+.d*|(-?d+)", "1-2*(60+(-40.35/5)-(-4*3))")
    print(ret)  # ['1', '-2', '60', '', '5', '-4', '3']
    
    ret = re.findall(r"-?d+|-?d+.d*", "1-2*(60+(-40.35/5)-(-4*3))")
    print(ret)  # ['1', '-2', '60', '-40', '35', '5', '-4', '3']
    
    ret = re.findall(r"-?d+|(-?d+.d*)", "1-2*(60+(-40.35/5)-(-4*3))")
    print(ret)  # ['', '', '', '', '', '', '', '']
    
    ret = re.findall(r"(-?d+.d*)|-?d+", "1-2*(60+(-40.35/5)-(-4*3))")
    print(ret)  # ['', '', '', '-40.35', '', '', '']

    "|" 的匹配顺序从左向右 , 而且一旦匹配上了就不会匹配后面的那段正则

    "()" 是将被匹配的优先显示, 但是匹配不中的内容会被用 "" 空字符串来表示

    多个分组的匹配

    先按照整体正则匹配, 然后在提取()中,如果有两个分组(), 则以元组形式显示

    import re
    
    s = "A B C D"
    # p1 = re.compile("w+s+w+")
    # print(p1.findall(s)) # ['A B', 'C D']
    
    p1 = re.compile("(w+)s+w+")
    print(p1.findall(s))  
    # 第一步 ['A B','C D']   # ['(w+)s+w+','(w+)s+w+']
    # 第二步 ['A','C']   # ['(w+)', '(w+)']
    
    p1 = re.compile("(w+)s+(w+)")
    print(p1.findall(s))
    # 第一步 ['A B','C D']   # ['(w+)s+(w+)','(w+)s+(w+)']
    # 第二步 [('A','B'),('C','D')] # [('(w+)','(w+)'),('(w+)','(w+)')]
    
    
    
    

    进阶的练习

     

  • 相关阅读:
    睿象云-智能运维平台
    leetcode-----53. 最大子序和
    leetcode-----50. Pow(x, n)
    leetcode-----49. 字母异位词分组
    leetcode-----48. 旋转图像
    leetcode-----47. 全排列 II
    leetcode-----46. 全排列
    leetcode-----44. 通配符匹配
    SpringMVC @RequestParam和@RequestBody的区别
    SpringMVC 接受页面传递参数
  • 原文地址:https://www.cnblogs.com/shijieli/p/10624062.html
Copyright © 2011-2022 走看看