zoukankan      html  css  js  c++  java
  • 正则表达式模块

    import re
    
    # 元字符:. ^ $ * + ? { } [ ] | ( ) 
    
    # 通配符 . 只能代指任意一个字符,除了换行符
    
    # ^ 只以开始来匹配
    
    # $ 只以结尾来匹配
    
    # * 重复匹配[0,正无穷]
    
    # + 重复匹配[1,正无穷]
    
    # ?  取0次或1次
    
    # ret = re.findall('abc*?','abcccc')
    # print(ret)  # ['ab'] , *+贪婪匹配后面加? ,使其成为惰性匹配
    
    
    # {} 自定义范围贪婪匹配 {1,3} , {1,}:代表正无穷
    
        # * 等价于 {0,正无穷}
        # + 等价于 {1,正无穷}
        # ? 等价于 {0,1}
    
    
    # [] 1、字符集 [c,d] c 与 d  是或的关系,取其一进行匹配
    #    2、[a-z] 匹配a到z的字母范围
    #    3、取消元字符的特殊功能(^-这三个符号例外), [w,*] * 在这里面代表普通字符
    #    4、[^i]: ^放在[]里是取反,取不是i 的内容,[^4,5]:4和5是一组,取不是4、不是5 的内容
    
    #  1、反斜杠后面跟元字符,去除特殊功能
    #   2、反斜杠后面跟普通字符,实现特殊功能(
        # d  匹配任何十进制数;它相当于类 [0-9]。
        # D 匹配任何非数字字符;它相当于类 [^0-9]。
        # s  匹配任何空白字符;它相当于类 [ 	
    
    fv]。
        # S 匹配任何非空白字符;它相当于类 [^ 	
    
    fv]。
        # w 匹配任何字母数字字符;它相当于类 [a-zA-Z0-9_]。
        # W 匹配任何非字母数字字符;它相当于类 [^a-zA-Z0-9_]
        #   匹配一个特殊字符边界,比如空格 ,&,#等。   r'I' 匹配I
    # )
    
    # () 分组
    
        # set = re.findall('www.(w+).com','www.baidu.com')
        # print(set) #['baidu']
    
        # set = re.findall('www.(?:w+).com','www.baidu.com')
        # print(set) # ['www.baidu.com']     ?: 取消分组优先级
    
    
    # | 或的意思
    
    # 正则表达式的方法:
    # 1、 findall() 所有结果都返回到一个列表里
    
    # 2、 search() 匹配成功后返回第一个对象,无匹配成功会报错,对象可以通过group()方法返回结果
    
    # 3、 match() 只在字符串开始匹配,返回匹配到的第一个对象,通过group()方法返回结果
    
    # 4、split() 字符分割
    
        # ret = re.split('k','abdksjl')
        # print(ret) # ['abd', 'sjl']
    
        # ret = re.split('[j,s]','sdjksal')
        # print(ret) # ['', 'd', 'k', 'al'] 先分割j,然后再分割s
    
    # 5、sub() 替换
    
        # ret = re.sub('a','1','abca',1) # 最后面的1 表示只替换1次
        # print(ret) # 1bc1
    
        # ret = re.subn('d{4}$','****','410184108053')
        # print(ret) # ('41018410****', 1)  subn 后面多了一个替换的次数
    
    
    
    # 6、compile() 编译规则,通过方法调用,方便多次调用
    
        # obj = re.compile('.com')
        # ret = obj.findall('abc.com')
        # print(ret) # ['.com']
        #
        # ret1 = obj.search('abc.com').group()
        # print(ret1) # .com
        #
        # ret2 = obj.split('abc.com')
        # print(ret2) # ['abc', '']
        #
        # ret2 = obj.sub('.net','abc.com')
        # print(ret2) # abc.net
    
    
        # obj = re.compile('d{4}$')
        #
        # xkzh = obj.subn('****','410184108053')
        #
        # print(xkzh)
    
    
    
    
    # ret = re.findall('ww{2}l','hello world')
    # print(ret) # ['worl']
    
    # ret = re.findall('w..l','hello world')
    # print(ret)  # ['worl']
    #
    # ret = re.findall('^h...o','hheeeodokjdhowhello')
    # print(ret)  # [] ^ 只以开始来匹配,后面的不再匹配
    
    # ret = re.findall('a..x$','alexaoixaiuooiu')
    # print(ret) # [] $ 只以结尾来匹配
    
    # ret = re.findall('a*','kjibaaaaaaa')
    # print(ret) # ['', '', '', '', 'aaaaaaa', '']
    
    # ret = re.findall('ba+','kjibaaaaaaa')
    # print(ret) # ['aaaaaaa'] 匹配加号前面所有的字符
    
    # ret = re.findall('b+a','kjibadfbafs')
    # print(ret) # ['ba', 'ba']
    
    # ret = re.findall('b?a','kjibadfbfdafs')
    # print(ret) # ['ba', 'a']
    
    # ret = re.findall('a{2}b','aaab')
    # print(ret) # ['aab']
    
    # ret = re.findall('a{1,3}b','aaaacab')
    # print(ret) # ['ab']
    
    # ret = re.findall('a[c,d,e,]x','adx')
    # print(ret) # ['adx']
    
    # ret = re.findall('a[b,c]d','a,d')
    # print(ret) # ['a,d'] 逗号也代表一个字符
    
    # ret = re.findall('a[bc]d','abcd')
    # print(ret) # [] , b或c
    
    
    # ret = re.findall('[a-z]','adx')
    # print(ret) # ['a', 'd', 'x']
    
    # ret = re.findall('[w,*]','awbsd*d')
    # print(ret)  # ['w', '*']
    
    # ret = re.findall('[^i]','siuJO2')
    # print(ret) # ['s', 'u', 'J', 'O', '2']
    
    
    # ret = re.findall('d{2}','sdjio2303829fjiejowijef')
    # print(ret) # ['23', '03', '82']
    
    # ret = re.findall('D','sd230jf')
    # print(ret) # ['s', 'd', 'j', 'f']
    
    # ret = re.findall('s','dfs dfwdsad dsdd')
    # print(ret) # [' ', ' ']
    
    # ret = re.findall('S','dfs d dd')
    # print(ret) # ['d', 'f', 's', 'd', 'd', 'd']
    
    # ret = re.findall('w','d23fs d dd')
    # print(ret) # ['d', '2', '3', 'f', 's', 'd', 'd', 'd']
    #
    # ret = re.findall('W','d23
    fs d	 dd')
    # print(ret) # ['
    ', ' ', '	', ' ']
    
    
    # ret = re.findall(r'I','Hello,I am a LI&ST')
    # print(ret) # ['I', 'I']
    
    
    # ret = re.findall(r'I','Hello Iam a LI&ST')
    # print(ret) # ['I']
    
    # ret = re.search('sb','fdjsksblkjiohsb')  # search 匹配出第一个满足条件的结果
    # print(ret) # <_sre.SRE_Match object; span=(5, 7), match='sb'>
    # print(ret.group()) # sb
    
    # print(re.search('sb','fdjsksblkjiohsb').group()) # sb ,效果同上
    
    # print(re.search('a.','a.ghj').group())  #  匹配不到时,group 会报错,  结果为:a.
    
    # print(re.search('\\g','aghj').group())  #  匹配反斜杠 g
    
    # print(re.search(r'\g','aghj').group())  #  匹配反斜杠 g
    
    
    # ret = re.findall('(as)+','fjiaslijaskj')
    # print(ret)  #['as', 'as']
    
    # ret = re.findall('(as)+','fjiaslijaskj')
    # print(ret)  #['as', 'as']
    #
    # print(re.search('(as)+','fjiaslijaskj').group()) # as
    
    # print(re.search('(as)|3','as3').group())  # as, 取as 或 3
    
    # ret = re.search('(?P<id>d{3})/(?P<name>w{3})','weeew34ttt123/ooo')
    
    # print(ret.group()) # 123/ooo
    # print(ret.group('id')) # 123
    # print(ret.group('name')) # ooo
    
    
    
    # ret = re.match('asd','asdasdfdjiasd').group()
    # print(ret) # asd
    
    # print('abcdddfes'.split('d')) # ['abc', '', '', 'fes']
    
    
    
    
  • 相关阅读:
    企业要主动淘汰五种人
    人力管理的核心:选、用、育、留
    张瑞敏:正确路线确定后,干部就是决定因素
    西点军校如何培养学员
    董事长如何找合适的搭档
    企业家何时应该放权
    会计基础视频
    同样劳动,为何结果不同?
    什么是真正的工作到位
    中国的人口和经济周期
  • 原文地址:https://www.cnblogs.com/ihitao/p/8489297.html
Copyright © 2011-2022 走看看