zoukankan      html  css  js  c++  java
  • Python:Day19 正则表达式补充

    贪婪匹配

    贪婪匹配是指字符后面是*+?的时候,都是尽可能多的匹配,如果不想尽可能多的匹配,那么在这三个字符后面加?号即可,这样变成惰性匹配,按最少匹配。

    ret = re.findall('ab??','dfaabbbdwofj')
    
    print(ret)  #['a', 'a']

    d  匹配任何十进制数;它相当于类 [0-9]。
    D 匹配任何非数字字符;它相当于类 [^0-9]。
    s  匹配任何空白字符;它相当于类 [ fv]。
    S 匹配任何非空白字符;它相当于类 [^ fv]。
    w 匹配任何字母数字字符;它相当于类 [a-zA-Z0-9_]。
    W 匹配任何非字母数字字符;它相当于类 [^a-zA-Z0-9_]
      匹配一个特殊字符边界,比如空格 ,&,#等

    注意:以前这些只能用来匹配单个字符,如果想匹配多个,后面要加适当的元字符

    ret = re.findall('d','dfaabbbdwof123j')
    print(ret)  #['1', '2', '3']
    
    ret = re.findall('d{3}','dfaabbbdwof123j')
    print(ret)  #['123']
    
    ret = re.findall('d+','dfaabbbdwof123j')
    print(ret)  #['123']
    
    ret = re.findall('d*','dfaabbbdwof123j')
    print(ret)  #['', '', '', '', '', '', '', '', '', '', '', '123', '', '']

    分组( )

    ret = re.search('(ab)(ty)','erwabtyyy')
    print(ret.group())  #abty
    #search返回的是匹配到的整个字符
    
    ret = re.search('(ab)/(ty)*','erwab/tytyy')
    print(ret.group())  #ab/tyty
    #再次证明search返回的是匹配到的整个字符
    
    ret = re.findall('(ab)(ty)+','erwabtyfewwpabtytyab')
    print(ret)  #[('ab', 'ty'), ('ab', 'ty')]    为什么后面有元字符+,却不匹配后面一个ty???
    #findall默认只返回分组匹配到的字符,并且每个分组匹配到的字符用逗号隔开放在一个元组里面,作为一个整体
    
    ret = re.findall('(ab)/(ty)+','erwabtyfewwpab/tytyab')
    print(ret)  #[('ab', 'ty')]
    #再次证明findall默认只返回分组匹配到的字符,匹配规则中的其它字符不显示。
    
    ret = re.findall('(?:ab)/(?:ty)+','erwabtyfewwpab/tytyab')
    print(ret)  #['ab/tyty']  里面不再是一个元组了
    #如果想让findall返回整个规则匹配到的所有内容,在小括号中加上?:即可,此时返回的就是所有内容。
    
    #猜测:上面findall中(ty)后面的+没用可能是,这个元组不存储相同的元素。
  • 相关阅读:
    无缝世界场景加载的解决方案研究
    3D物体绘制不见
    dx sdk中关于常用dx api的performace性能参数
    OpenGL/DirectX渲染技巧集
    每天送你一個simle
    [原创] 一种页面数据错误输入提示方法
    [原创] ASP.NET 中如何弹出提示窗口然后导向另外一个页面
    [原创] 部署含有ReportView的控件的ASPX页面时出现错误
    公布一个简单的日志记录方法
    [原创] 如何在没有ASP.NET AjaxEnabled Web Site 向导的情况下加入Ajax支持
  • 原文地址:https://www.cnblogs.com/sq5288/p/8461721.html
Copyright © 2011-2022 走看看