zoukankan      html  css  js  c++  java
  • New-Python-模块之re其他

    1、search:与findall用法完全一致,不一样的地方在于search匹配一次就结束

    print(re.search('alex','alex say hello alex').group())
    
    alex
    匹配的是一个对象,拿到这个值,需要调group

    2、match:match代表从头匹配

    print(re.match('alex','alex say hello alex').group())
    print(re.match('alex',' alex say hello alex').group())
    
    相当于:
    print(re.search('^alex','alex say hello alex').group())

    3、split

    print(re.split(':','root:x:0:0:/root::/bin/bash'))
    
    ['root', 'x', '0', '0', '/root', '', '/bin/bash']

    4、sub---替换

    print(re.sub('alex','SB','alex say i have on telsa my name is alex',1))
    print(re.subn('alex','SB','alex say i have on telsa my name is alex'))
    #后面1意思是替换一次,默认全部替换;
    
    #subn:可以显示替换了几次:
    
    SB say i have on telsa my name is alex
    ('SB say i have on telsa my name is SB', 2)
    print(re.sub(r'(w+)(W+)(w+)(W+)(w+)',r'52341','alex-love: SB'))
    print(re.sub(r'^al',r'AAAAAAAAA','alex-love: SB alex'))
    
    SB-love: alex
    AAAAAAAAAex-love: SB alex

    5、正则表达式重用

    print(re.findall('^alex','alex say hello alex'))
    print(re.search('^alex','alex say hello alex'))
    
    obj=re.compile(r'^alex')
    print(obj.findall('alex say hello alex'))
    print(obj.search('alex say hello alex').group())

    6、补充:

    print(re.findall(r'<.*?>.*?</.*?>','<h1>hello</h1>'))
    print(re.findall(r'<(.*?)>.*?</(.*?)>','<h1>hello</h1>'))
    print(re.findall(r'<(.*?)>.*?</(1)>','<h1>hello</h1>'))
    print(re.findall(r'<(?P<k>.*?)>.*?</(?P=k)>','<h1>hello</h1>'))
    
    ['<h1>hello</h1>']
    [('h1', 'h1')]
    [('h1', 'h1')]
    ['h1']
    
    取所有
    取分组
    同上
    取k

    7、取数字

    print(re.findall('-?d+.?d*',"1-12*(60+(-40.35/5)-(-4*3))"))
    
    ['1', '-12', '60', '-40.35', '5', '-4', '3']
    print(re.findall('-?d+',"1-12*(60+(-40.35/5)-(-4*3))"))
    print(re.findall('-?d+.d+',"1-12*(60+(-40.35/5)-(-4*3))"))
    
    print(re.findall('-?d+.d+|(-?d+)',"1-12*(60+(-40.35/5)-(-4*3))"))   #只留下整数
    print(re.findall('(-?d+.d+)|-?d+',"1-12*(60+(-40.35/5)-(-4*3))"))    #只留下小数
    expression='1-2*((60+2*(-3-40.0/5)*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2))'
    
    print(re.search(r'(([-+*/]?d+.?d*)+)',expression).group())  #取第一个括号内容
    print(eval(expression))   牛逼

    作者:大雄猫
    出处:http://www.cnblogs.com/guoxiangqian/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面 明显位M给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    2月份热门的 24 个 jQuery 插件
    走近求伯君1 求伯君,1964年11月26日出生于浙江新昌县。
    转CSDN,13原则
    SQL Server数据库如何正确加密?
    Zend Studio提供zend studio教程、zend studio下载等相关资源的公益性站点。 订阅
    高端人才必看,生意人必读
    有速度才有效率,支持Google gear离线的网站和应用
    2009.08.20总结与微软中国开发部经理段老师的通话无锡德立解决方案
    从SOA、SaaS到博科自主配置平台
    MySQL 1045错误的解决方法
  • 原文地址:https://www.cnblogs.com/guoxiangqian/p/7746339.html
Copyright © 2011-2022 走看看