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

  • 相关阅读:
    joomla allvideo 去掉embed share
    程序员高效开发的几个技巧
    分布式icinga2安装与使用
    Openstack Murano(kilo)二次开发之添加Volume
    autohotkey在运维中的应用
    快应用之我见
    目前微服务/REST的最佳技术栈
    2016 年终总结
    2015年终总结
    用TypeScript开发了一个网页游戏引擎,开放源代码
  • 原文地址:https://www.cnblogs.com/zhangziyan/p/9118969.html
Copyright © 2011-2022 走看看