zoukankan      html  css  js  c++  java
  • Python re.search和re.findall的比较

    Python re.search和re.findall的比较:

    先分析re.search:

    import re
    s1='hjxxHelloxxrynxxPythonxxplkhjxxHixxrynxxWorldxxplk'
    
    f1=re.search('xx(.*?)xx',s1)
    print(f1)
    
    f2=re.search('xx(.*?)xx',s1).group(1)
    print(f2)
    
    f3=re.search('xx(.*?)xxrynxx(.*?)xx',s1)
    print(f3)
    
    f41=re.search('xx(.*?)xxrynxx(.*?)xx',s1).group(1)#这里如果用group(3)则返回no such group,可见re.search寻找第一个满足条件序列,即当re.search找到第一个符合要求的内容后,不管后面是否还有符合要求的内容,都会停止寻找
    print(f41)
    
    f42=re.search('xx(.*?)xxrynxx(.*?)xxplkhjxx(.*?)xxrynxx(.*?)xx',s1).group(3)
    print(f42)
    print('end')

    输出为:

    <_sre.SRE_Match object; span=(2, 11), match='xxHelloxx'>  #数据类型为‘sre.SRE_MATCH’
    Hello  #数据类型为‘str’
    <_sre.SRE_Match object; span=(2, 24), match='xxHelloxxrynxxPythonxx'>
    Hello
    Hi
    end

     注意,search要加.group(%d)!这样才能读取所需类型,而不是得到‘sre.SRE_MATCH’类型,which无法直接处理。

    再来看re.findall:

    import re
    s1='hjxxHelloxxrynxxPythonxxplkhjxxHixxrynxxWorldxxplk'
    
    f1=re.findall('xx(.*?)xx',s1)
    print(f1)
    
    f2=re.findall('xx(.*?)xxrynxx(.*?)xx',s1)
    print(f2)
    print(f2[0])
    print(f2[1][0])
    print(type(f2))
    print(type(f2[0]))
    print(type(f2[1][0]))
    
    print('end')

    输出为:

    ['Hello', 'Python', 'Hi', 'World']
    [('Hello', 'Python'), ('Hi', 'World')]
    ('Hello', 'Python')
    Hi
    <class 'list'>
    <class 'tuple'>
    <class 'str'>
    end

  • 相关阅读:
    sql中where和having的区别
    mysql中locate和substring函数使用
    使用jdk进行数据迁移(sqlite迁移mysql)
    mysql数值函数
    mysql字符串函数
    zabbix-2.2.2(Ubuntu 14.04 LTS/OpenLogic 7.2)
    Piwik-2.16.1 (OpenLogic CentOS7.2)
    Nagios-4.1.1 (OpenLogic CentOS 7.2)
    Bugzilla-5.0.3 (OpenLogic CentOS 7.2)
    GitLab-CE-8.9.4 (OpenLogic CentOS 7.2)
  • 原文地址:https://www.cnblogs.com/zhangziyan/p/9118969.html
Copyright © 2011-2022 走看看