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

    一.re模块

     python提供re模块,包含所有正则表达式的功能

    二.r前缀

    使用r前缀,不用考虑转义问题

    如:
    s = r'ABC-001'

    三.match方法

    判断是否匹配,如果匹配成功,返回一个Match对象,否则返回None

    如:

    import re
    
    if re.match(r'w', 'afefe'):
        print('match')
    else:
        print('no')
    

      

    四.切分字符串

    如果可以切分,返回切分后的列表;如果不能,以列表返回原字符串

    import re
    
    print(re.split(r's+', 'a     ,b      d'))
    
    输出:
    ['a', ',b', 'd']
    

      

    五.分组

    提取子串,()表示提取的分组

    import re
    
    r = re.match(r'(d+)-(d+)', '010-059')
    print(r.groups())
    print(r.group(1)) #group(0)表示原字符串,1表示第一个匹配到的
    

      

    输出:
    ('010', '059')
    010

    六.贪婪匹配

    正则匹配默认是贪婪匹配,也就是匹配尽可能多的字符

    1.贪婪匹配:

    import re
    
    r = re.match(r'^(d+)(0*)$', '010000').groups()
    print(r)
    

      

    输出:
    ('010000', '')

    2.非贪婪匹配:

    import re
    
    r = re.match(r'^(d+?)(0*)$', '010000').groups()
    print(r)
    

      

    输出:
    ('01', '0000')

    七.编译

    当我们在Python中使用正则表达式时,re模块内部会干两件事情:

    1.编译正则表达式,如果正则表达式的字符串本身不合法,会报错;
    2.用编译后的正则表达式去匹配字符串。

    如果一个正则表达式要重复使用几千次,出于效率的考虑,我们可以预编译该正则表达式,接下来重复使用时就不需要编译这个步骤了,直接匹配:

    import re
    
    re_num = re.compile(r'^(d+?)(0*)$')
    r = re_num.match('010000').groups()
    print(r)
  • 相关阅读:
    layui使用iconfont
    MySQL&MyBatis 时间处理的配合
    Jira客户端
    同级div设置display:inline-block,父级div强制不换行
    Spring RestController 请求参数详解
    Mybatis映射文件
    Redis分布式锁
    Netty1
    Maven工程打成一个jar包
    Maven 工程读取resource下的文件
  • 原文地址:https://www.cnblogs.com/itfenqing/p/10261933.html
Copyright © 2011-2022 走看看