• 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+)')]
    
    
    
    

    进阶的练习

     

  • 相关阅读:
    20个热门jQuery的提示和技巧
    10个原生JavaScript技巧
    HTML5开发 BUG解决
    JS笔试题
    AMD:浏览器中的模块规范
    Win8 App使用Listview的简单方法
    Javascript模块化编程
    移动端插件IScroll.js
    移动web资源概论
    Commonjs规范中module.exports和exports的区别
  • 原文地址:https://www.cnblogs.com/shijieli/p/10624062.html
Copyright © 2020-2023  润新知