• re模块简介及元字符和转义字符


    import re
    
    '''
    .代表通配符,除了
    不能匹配外,其它全部都能匹配,一个点代表一个字符
    ^代表字符串开头进行匹配,只能放在最前面
    $代表字符串结尾进行匹配,只能放在最后面
    *代表0到无穷次
    +代表1次到无穷次
    ?代表0次到1次
    {}代表自行控制多少次,{0,} == *,{1,} == +,{0,1} == ?,{6}代表6次,{1,6}代表1,2,3,4,5,6次
    *****注意:前面的*,+,?等都是贪婪匹配,也就是尽可能多的匹配;后面加?号使其变成惰性匹配,比如*?匹配0个,+?匹配1个*****
    []代表字符集,或的作用;
    '''
    
    # .代表通配符,除了
    不能匹配外,其它全部都能匹配,一个点代表一个字符
    # print(re.findall('a..x', 'fialexskdlfjaghx'))
    
    # ^代表字符串开头进行匹配,只能放在最前面
    # print(re.findall('^b.*b$', 'bslkafdsallkb'))
    # print(re.findall('^abc', 'abcsss'))
    
    # $代表字符串结尾进行匹配,只能放在最后面
    # print(re.findall('.+b$', 'asdfb'))
    
    # *代表0到无穷次
    # print(re.findall('abc*', 'abcccccbbabc'))
    # print(re.findall('a*', 'abakjalaaoaaia')) # 结果为['a', '', 'a', '', '', 'a', '', 'aa', '', 'aa', '', 'a', ''],*代表0到无穷次,那么不是a也代表匹配上了,因为0它也取,只不过为空
    # print(re.findall('d*$', 'dddlslslsdddd'))
    # print(re.findall('^d*', 'dddlslslsdddd'))
    
    # +代表1次到无穷次
    # print(re.findall('alex*', 'asddsaale')) # *代表0到无穷次,那么x可以没有,所以ale可以取出来
    # print(re.findall('alex+', 'asddsaale')) # +代表1到无穷次,那么x最少要有一个,所以alex取不出来
    
    # ?代表0次到1次
    # print(re.findall('alex?', 'asddsafale'))
    # print(re.findall('alex?', 'asddsalexxxxxxf'))
    
    # {}代表自行控制多少次,{0,} == *,{1,} == +,{0,1} == ?,{6}代表6次,{1,6}代表1,2,3,4,5,6次;*****大括号里的逗号不能有空格*****
    # print(re.findall('alex{0,}', 'ahskalefdsfd'))
    # print(re.findall('alex{1,}', 'ahskalexxxfdsfd'))
    # print(re.findall('alex{2,4}', 'alexxfkdjalexxxfkdialexjaleiialexxxx'))
    # print(re.findall('alex{3}', 'alexxxxx'))
    
    # 惰性匹配--->*?匹配0个,+?匹配一个
    # print(re.findall('alex*?', 'ale'))
    # print(re.findall('alex*?', 'alex'))
    # print(re.findall('alex*?', 'alexxxx'))
    # print(re.findall('alex+?', 'ale'))
    # print(re.findall('alex+?', 'alex'))
    # print(re.findall('alex+?', 'alexxxx'))
    
    # []代表字符集,或的作用
    # print(re.findall('www[baidu,]', 'wwwbwwwawwwiwwwdwwwuwww,')) # 里面的每一个字符都当作一次匹配,包括逗号:['wwwb', 'wwwa', 'wwwi', 'wwwd', 'wwwu', 'www,']
    # print(re.findall('[abc.*+]', 'aa.bs*cs+')) # ['a', 'a', '.', 'b', '*', 'c', '+']
    
    # 在字符集里有功能的符号:- ^ 
    # print(re.findall('[a-z]', '123abc456qweRTY')) # 代表小写字母a-z
    # print(re.findall('[A-Z]', '123ABC456QWErty')) # 代表大写字母A-Z
    # print(re.findall('[0-9]', '001122q3w4e5A6S7D89')) # 代表数字0-9
    # print(re.findall('q[^a-z]', 'qaqbqcqdqeqfq0q1qAq.q*q!q')) # 非,除小写字母a-z以外的都匹配
    # *****print(re.findall('([^()]*)', '12+(34*6+2-5*(2-1))')) # *****计算器作业---提取括号里的表达式---没有理解透到底怎么回事,需重新复习理解*****
    '''
    元字符之转义符
    反斜杠后边跟元字符去除特殊功能,比如.
    反斜杠后边跟普通字符实现特殊功能,比如d
    
    d 匹配任何十进制数;它相当于类 [0-9]。
    D 匹配任何非数字字符;它相当于类 [^0-9]。
    s 匹配任何空白字符;它相当于类 [ 	
    
    fv]。
    S 匹配任何非空白字符;它相当于类 [^ 	
    
    fv]。
    w 匹配任何字母数字字符;它相当于类 [a-zA-Z0-9_]。下划线也可以匹配到
    W 匹配任何非字母数字字符;它相当于类 [^a-zA-Z0-9_]
     匹配一个特殊字符边界,比如空格,&,#等
    '''
    # print(re.findall('d+', '1a2b34c56d78f90g'))
    # print(re.findall('D+', '1a2b34c56d78f90gw'))
    # print(re.findall('s+', '	abc
    123'))
    # print(re.findall('S+', '	abc
    123'))
    # print(re.findall('w+', '12,ab.00*cd?你好@'))
    # print(re.findall('W+', '12,ab.00*cd?你好@'))
    # print(re.findall('www.baidu.com', 'www.baidu.com')) # 如果不加转义符,后面的除了
    不能匹配外,其它都能匹配到
    
    print(re.findall('I', 'I am LIST')) # ['I', 'I']
    print(re.findall('^I', 'I am LIST')) # ['I']
    print(re.findall('^I', 'hello I am LIST')) # []
    print(re.findall('I', 'hello I am LIST')) # []
    print(re.findall(r'I', 'hello I am LIST')) # ['I'],r=rawstring,原生字符串,不做任何转义
    print(re.findall('I\b', 'hello I am LIST')) # ['I']
    
    print(re.findall('c\\l', 'abcle')) # l<--->re模块\l<--->python解释器\\l;结果['c\l'],其实是一个,但是python又一次转义多加了一个
    print(re.findall(r'c\l', 'abcle')) # l<--->re模块\l<--->python解释器\l
    while True: print('studying...')
  • 相关阅读:
    Android 通过solid来定义不同边框的颜色,可以只定义一个边框的颜色
    Java里的简单替换
    ActionBar
    char、short、int、float、double对应字节
    Java和JDK版本的关系-(转载)
    JFlash ARM对stm32程序的读取和烧录-(转载)
    STM32的时钟系统RCC详细整理(转载)
    STM32F7系列时钟相关问题:HSE模式配置(旁路模式、非旁路模式
    git OpenSSL SSL_connect问题
    keil使用VScode外部编辑器
  • 原文地址:https://www.cnblogs.com/xuewei95/p/14589659.html
Copyright © 2020-2023  润新知