zoukankan      html  css  js  c++  java
  • re模块方法的常规操作

    一、概念:利用一些特定的匹配规则从字符串或者文本中找需要的内容

    import re
    s="飞流直下三千尺,疑是银河落九天"
    res=re.findall('三(.{2})',s)
    print(res)
    ===>千尺
    
    import re
    s="飞流直下三千尺,疑是银河落九天"
    res=re.findall('三.{2}',s)
    print(res)
    ===>三千尺
    

    二、re常用匹配方法

    1、^ 从开头找

    import re
    s="飞流直下三千尺,疑是银河落九天"
    res=re.findall('^疑是',s)
    print(res)
    ==》None
    
    +++++++
    import re
    s="飞流直下三千尺,疑是银河落九天"
    res=re.findall('^飞流',s)
    print(res)
    ==》['飞流']
    

    2、$默认是结尾

    import re
    s="飞流直下三千尺,疑是银河落九天"
    res=re.findall('飞流$',s)
    print(res)
    ==》[]
    
    +++++++++++++++++
    s="飞流直下三千尺,疑是银河落九天"
    res=re.findall('天$',s)
    print(res)
    ==》['天']
    

    3、| 相当于or

    import re
    s="飞流直下三千尺,疑是银河落九天"
    res=re.findall('飞流|疑是',s)
    print(res)
    ===》['飞流', '疑是']
    

    4、[a,b,c] 只要包含列表中的元素都找出来[a-zA-Z]

    s="abdadkjwqbdkqbabdjaj"
    res=re.findall('[a,b,c]',s)
    print(res)
    ====>['a', 'b', 'a', 'b', 'b', 'a', 'b', 'a']
    

    5、.{num} 匹配到num个字符

    s="abdadkjwqbdkqbabdjaj"
    res=re.findall('ad.{2}',s)
    print(res)
    ====>['adkj']
    

    6、* 匹配0个及0个以上

    a="aabcbcbcbadaf"
    res=re.findall('a*',a)
    print(res)
    ===>['aa', '', '', '', '', '', '', '', 'a', '', 'a', '', '']
    

    7、+ 匹配至少有一个af

    s="afafefafef"
    res=re.findall('af+',s)
    print(res)
    ===>['af', 'af', 'af']
    
    s="afffafefafef"
    res=re.findall('af+',s)
    print(res)
    ====>['afff', 'af', 'af']
    

    8、? 匹配0个或者多个

    ['d', '', '', '', '', '', '', '', '']
    

    9、d 匹配数字

    s="Awfagwega131fsf233gs"
    res=re.findall('d',s)
    ==>['1', '3', '1', '2', '3', '3']
    

    10、D 除了数字

    s="Awfagwega131fs#$@f233gs"
    res=re.findall('D',s)
    ==>['A', 'w', 'f', 'a', 'g', 'w', 'e', 'g', 'a', 'f', 's', '#', '$', '@', 'f', 'g', 's']
    

    11、s 匹配空

    s="Awfagwega  131fs#$@f2da  33gs"
    res=re.findall('s',s)
    print(res)
    ==>[' ', ' ', ' ', ' ']
    

    12、S 匹配非空

    s="Awfagwega  131fs#$@f2da  33gs"
    res=re.findall('S',s)
    print(res)
    ==>['A', 'w', 'f', 'a', 'g', 'w', 'e', 'g', 'a', '1', '3', '1', 'f', 's', '#', '$', '@', 'f', '2', 'd', 'a', '3', '3', 'g', 's']
    

    13、w字母数字下划线 非空

    s="Awfagwega  13__#(*@(1fs#$@f2da  33gs"
    res=re.findall('w',s)
    print(res)
    ==》['A', 'w', 'f', 'a', 'g', 'w', 'e', 'g', 'a', '1', '3', '_', '_', '1', 'f', 's', 'f', '2', 'd', 'a', '3', '3', 'g', 's']
    

    14、贪婪匹配 .*

    s="Awfagwega  13__#(*@(1fs#$@f2da  33gs"
    res=re.findall('.*',s)
    print(res)
    ==>['Awfagwega  13__#(*@(1fs#$@f2da  33gs', '']
    
    
    s="Awfagwega  13__#(*@(1fs#$@f2da  33gss"
    res=re.findall('1.*s',s)
    print(res)
    ==>['13__#(*@(1fs#$@f2da  33gss']
    

    15、非贪婪 。*?

    s="Awfagwega  13__#(*@(1fs#$@f2da  33gss"
    res=re.findall('1.*?s',s)
    print(res)
    ==>['13__#(*@(1fs']
    

    三、re高级用法

    1、compile

    import re
    s="fef@*Emfs#@#&*FUW!@34311#$@njn"
    re_temp1=re.compile('w+')
    res=re_temp1.findall(s)
    print(res)
    

    2、match(从开头开始匹配,只取一个) | search(搜索一个,只取一个)

    import re
    s="abcdddaa"
    res1=re.match('aa',s)
    res2=re.search('aa',s)
    print(res1.group())===>None
    print(res2.group())===>aa
    

    3、()分组(也就是取括号里面的内容)

    import re
    s="abcbabdbakjdhqhoifioaoqfq"
    res=re.findall('ba(.*?)if',s)
    print(res)
    ==>['bdbakjdhqho']
    
    ++++++++++
    s="abcbabdbakjdhqhoifioaoqfq"
    res=re.findall('ba(k.*?)if',s)
    print(res)
    ====>['kjdhqho']
    

    4、split:通过正则的匹配规则,按匹配到的内容进行切割

    import re
    s="飞流直下三千尺,疑是银河落九天"
    res=re.split(',',s)
    print(res)
    ==>['飞流直下三千尺', '疑是银河落九天']
    ++++++++++++++++++++
    s="飞流直下三11千尺,疑是31银321河落九天"
    res=re.split('d',s)#可以写匹配规则进行切割
    print(res)
    ====>['飞流直下三', '', '千尺,疑是', '', '银', '', '', '河落九天']
    ++++++++++++++++++++
    s="飞流直下三1111千尺,疑是31银321河落九天"
    res=re.split('d+',s)
    print(res)
    ==》['飞流直下三', '千尺,疑是', '银', '河落九天']
    

    5、sub(匹配替换匹配的内容,并返回) | subs(匹配替换匹配的内容,并返回替换的数量)

    import re
    s="飞流直下三11千尺,疑是31银321河落九天"
    res=re.sub('d',"",s)
    print(res)
    ===>飞流直下三千尺,疑是银河落九天  <class 'str'>
    
    import re
    s="飞流直下三11千尺,疑是31银321河落九天"
    res=re.sub('d',"",s)
    print(res)
    ===>('飞流直下三千尺,疑是银河落九天', 7) <class 'tuple'>
    
  • 相关阅读:
    mapreduce 函数入门 二
    mapreduce 函数入门 一
    Flume+Kafka+Storm+Redis 大数据在线实时分析
    mapReduce 大数据离线分析
    docker 简介
    flume安装使用+根据数据源分类
    hiho 171周
    如何新建一个空的optix工程
    读 Real-Time Rendering 收获
    hiho 1590
  • 原文地址:https://www.cnblogs.com/chuwanliu/p/11015585.html
Copyright © 2011-2022 走看看