zoukankan      html  css  js  c++  java
  • python学习day12

    正则表达式的学习

    #codeing:UTF-8
    #__author__:Duke
    #date:2018/3/17/017 23:29
    import re
    
    #方法一  findall  全找
    ret = re.findall('ww{2}','hello world')
    print(ret)
    
    # 元字符  11个
    # .  通配符
    ret = re.findall('w..','hello world')  # w..  点点任意指代,一个代指一个字符
    print(ret)
    ret = re.findall('w.l','hello w
    ld')  # w..  点点任意指代,一个代指一个字符
    print(ret)   #  不能指代“"字符
    
    # ^   尖角符
    ret = re.findall("^h...o","hjasdfhello")   #只从开始匹配
    print(ret)
    
    #  $  dollor  符号
    ret = re.findall("d..e$","hjasdukefhflle")   #只从末尾匹配
    print(ret)
    
    #  * 重复匹配   [0  无穷)个
    ret = re.findall("du*","hjasdukefhfllfdukeeerffrefwegduuuuekw")   #只从末尾匹配
    print(ret)
    
    #  + 重复匹配   [1  无穷)个
    ret = re.findall("du+","hjasdukefhfllfdkeeerffrefwegduuuuekw")
    print(ret)   #至少一个u
    
    # #  + 重复匹配   [1  无穷)个
    ret = re.findall("du+","hjasdukefhfllfdkeeerffrefwegduuuuekw")
    print(ret)   #至少一个u
    
    #  ?   0或则1个 d
    ret = re.findall("d?u","hjasdukefhfllfdkeeerffrefwegduuuuekw")
    print(ret)
    
    # { }  在区间内均可
    ret = re.findall("du{1,2}","hjasdukefhfllfdkeeerffrefwegduuuuekw")
    print(ret)   #贪难匹配,按最多的匹配
    # 结论:* =={0,+无穷}   + == {1,+无穷}    ?== {0,1}
    
    # []   字符集
    ret = re.findall('a[c,d,e,s,]x','asx')   #是 or 意思
    print(ret)
    
    ret = re.findall('[a-z]','asx')   # - 表示范围
    print(ret)
    
    #     注意 [] 字符集  :取消元字符的作用、  (    ^  - )这三个除外
    ret = re.findall('[w,,]','awdx*,')   #  *变为普通字符
    print(ret)
    
    ret = re.findall('[^a]','awdx*,')   #  ^  取补集  即为除  a 的元素
    print(ret)
    
    ret = re.findall('[^a,w]','awdx*,')   #  []  中的全部元素非  包括,
    print(ret)  #['d', 'x', '*']
    
    #    斜杠
    #斜杠后的元字符 去除特殊功能
    #斜杠后的一些普通字符实现特殊功能
    #  d  表示数字  [0,9]
    print(re.findall('d{11}','hqfuhi8712648721485'))   #匹配11个数字
    # ['87126487214']
    #  D 表示[^0=9]
    print(re.findall('D{5}','hqfuhi8712648721485'))   #匹配5个字符
    # # ['hqfuh']
    # #  s 表示任意空字符]
    print(re.findall('s','hqfu	hi87 1264
    8721485'))
    # # ['	', ' ', '
    ']
    # #  S 表示任意非空字符]
    print(re.findall('S','hqfu	hi87 1264
    8721485'))
    # ['h', 'q', 'f', 'u', 'h', 'i', '8', '7', '1', '2', '6', '4', '8', '7', '2',
    #  w 表示任意数字  字母  字符]
    #  W 表示任意非数字  字母  字符]
    #   表示特殊字符的边界
    print(re.findall(r'i','hello i an duke'))
    
      #+
    ret = re.search('a+','aaawdx*,')   #
    print(ret.group())  #aaa
    ret = re.search('a+','aaawdx*,')   #
    print(ret)  #None
    
    # 两种方法解决标红
    ret = re.findall(r'\','aaawdxD:c')   #
    print(ret)  #['\']
    ret = re.findall('\\','aaawdxD:c')   #
    print(ret)  #['\']
    
    #   用结果理解
    ret = re.search(r'duke','duke')   #  r表示原生字符串
    print(ret.group())  #duke
    ret = re.search('duke','duke')   #  r表示原生字符串
    print(ret)  #None
    
    #  ()做分组   |
    print(re.search('(as)+','sdjkasf').group())  #as
    print(re.search('(as+)','sdjkasf').group())  #as
    print(re.search('(as)|3','sdj3kas3f3').group())  #整体或
    print(re.findall('(as)|3','sdj3kas3f3') ) #['', 'as', '', '']
    
    # #用于文件路径
    ret = re.search('(?P<id>d{3})/(?P<name>w{3})','dghwwweeejyaf123/ooo')
    print(ret.group())
    print(ret.group('id'))
    print(ret.group('name'))
    
    # 二:re  的方法
    #findall()  :返回全部的结果,以list的形势
    # re.search()  :返回一个对象 ,对象通过 group方法返回结果
    # re.match()   只在字符串开始开始匹配  ,返回的也是一个对象  group
    # re.split()  :
    print(re.split('[k,s]','dukehsijik'))   #这个很重要
    print(re.split('[k,s]','dskehsijik'))   #注意这个的分法
    
    #sub()  替换
    print(re.sub('d..e','haha','jiewjfrewdukeshjs'))
    principle= re.compile('d..e')  #编译规则
    ret = principle.findall('iewjfrewdukeshjs')
    print(ret)   #['duke']
  • 相关阅读:
    shell学习(4)- awk
    shell学习(3)- grep
    职场社交软件脉脉职言区最近一个星期在聊什么?
    shell学习(2)- sed
    shell学习(1)
    aws cli command line interface的安装与使用
    linux定时任务报错mysql: command not found
    如何做技术积累
    基于php的AWS存储服务
    机器学习:卷积神经网络
  • 原文地址:https://www.cnblogs.com/duke77--null/p/8595319.html
Copyright © 2011-2022 走看看