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

  • 相关阅读:
    Struts2框架
    读者写者问题
    哲学家就餐问题
    理解中断
    理解处理机调度
    理解死锁
    理解进程
    Linux CentOS 6.7 挂载U盘
    家庭-养老院模型理解IOC和DI
    Bash基础
  • 原文地址:https://www.cnblogs.com/zhangziyan/p/9118969.html
Copyright © 2011-2022 走看看