zoukankan      html  css  js  c++  java
  • re匹配语法-match、search和findall

    1.re.match() 匹配第一个值

    列表里的值可以有多个范围,有一个符合就可以。

    match只匹配第一个值,所以列表里的范围是第一个值得取值范围。如果第一个值被设定好且存在,那么列表的取值范围变为第二个,match返回的值会变成第一个和第二个。

    有些内容首字符是固定的,比如手机号等。match的作用就是查看文件中的一些固定的字符是否出错或者获得文件中首个字符(没有指定首字符的情况下)。

    import re
    
    date = "5M345bc"
    
    print(re.match("5[0-9]","345bc"))
    print(re.match("[a-z,A-Z,0-9]",date))
    

    2.re.search()  

    search 需要在取值范围后加上长度限定,否则和match一样,只会取符合条件的第一个值。

    search是全局搜索,符合条件就返回,match是从第一个搜索。

    search返回的是一个字符串,长度为花括号里的设定。

    search从全局返回的是第一个符合条件的值,那么怎么才能返回所有符合条件的值?

    import re
    print(re.search("[a-z]{4}","345789abdc"))
    

      

    print(re.search("3[0-9]{5}","345789abdc"))       #花括号里的是返回值的最大个数,不能超过总长度。

    print(re.search("[a-z,A-Z,0-9]{8}","345789abcd"))

    3.findall()  返回所有符合条件的值。

    search只返回花括号里设定长度的值的字符串,不设定长度就只返回一个字符,和match一样,只是search是全局。

    findall 返回一个列表,里面的值可根据花括号里面的长度分离开来,成为列表中的一个一个元素。

    import re
    
    print(re.match("[0-9]","345789abdc"))
    
    print(re.search("[a-z]{2}","345789abdc"))
    print(re.search("[a-z,A-Z,0-9]{4}","345789abcd"))
    
    print(re.findall("[a-z]{2}","345789abdc"))
    print(re.findall("[a-z,A-Z,0-9]{4}","345789abcd"))
    
    
    # <_sre.SRE_Match object; span=(0, 1), match='3'>
    # <_sre.SRE_Match object; span=(6, 8), match='ab'>
    # <_sre.SRE_Match object; span=(0, 4), match='3457'>
    # ['ab', 'dc']
    # ['3457', '89ab']
    

    如何拿到search里面match的值

    利用group()方法,首先得判断返回值是否是None

    res1 = re.search("[a-z,A-Z,0-9]","345789abcd")
    
    if res1 :
        print(res1.group())
    

      

      

  • 相关阅读:
    strcpy 和 strnpy 区别
    js apply/call/caller/callee/bind使用方法与区别分析
    js中的this关键字详解
    Asp.Net_Get跟Post
    Asp.Net_Form验证跟授权
    Css_button样式对不齐
    Asp.Net_上传文件(ftp、webClient、webService)
    Asp.Net_优化
    Asp.Net_后台代码访问前台html标签
    Asp.Net_Ajax调用WebService返回Json前台获取循环解析
  • 原文地址:https://www.cnblogs.com/Roc-Atlantis/p/8891483.html
Copyright © 2011-2022 走看看