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

      

      

  • 相关阅读:
    [King.yue]Ext.net 页面布局Flex
    [King.yue]Ext.net 弹出Windows窗体注意的事项
    [Irving]SqlServer 标量函数 详解【转】
    [Andrew]Ext.net前台弹框
    [King.yue]Ext中Grid得到选择行数据的方法总结
    [zouxianghui] 清空GridPanel的checkbox选中行
    [BILL WEI]SQL 存储过程学习
    [Tommas] 测试场景 VS 测试用例 哪个更好?(转)
    winform 打印小票
    html5 input 标签
  • 原文地址:https://www.cnblogs.com/Roc-Atlantis/p/8891483.html
Copyright © 2011-2022 走看看