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)后面的+没用可能是,这个元组不存储相同的元素。
  • 相关阅读:
    Js获取或计算时间的相关操作
    SqlServer删除表中重复的记录并保留一条
    获取js文件后的参数
    谷歌浏览器官方下载地址
    ionic项目中实现发短信和打电话
    ui-router传递参数
    ng-options用法详解
    html5 localStorage(本地存储)
    cordova插件之Local Notification(本地通知)
    AngularJS $http service
  • 原文地址:https://www.cnblogs.com/sq5288/p/8461721.html
Copyright © 2011-2022 走看看