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())
    

      

      

  • 相关阅读:
    ps切图保存所有切片为png
    指法练习 V1.0_haley(指法练习工具)
    zoj 4020 The 18th Zhejiang University Programming Contest Sponsored by TuSimple
    CF 某套题 O :Grid (简单BFS)
    codeforces 某套题s : surf(贪心 || 动态规划)
    STL模板整理 全排列
    STL模板整理 priority_queue
    STL模板整理 pair
    STL模板整理 set
    第八届省赛 B:Quadrat (打表找规律)
  • 原文地址:https://www.cnblogs.com/Roc-Atlantis/p/8891483.html
Copyright © 2011-2022 走看看