美文网首页
Python正则表达式进阶

Python正则表达式进阶

作者: 酒深巷子Ya | 来源:发表于2018-04-17 23:52 被阅读43次

    re模块使用

    • match()方法判断是否匹配,如果匹配成功,返回一个Match对象,否则返回None。例如:
    import re
    par = re.match(r'^\d{3}\-\d{3,8}$', '021-6444651')
    print(par)
    

    结果:<_sre.SRE_Match object; span=(0, 11), match='021-6444651'>

    • 字符串分割:正则表达式切分字符串比用固定的字符更加灵活。例如:
    str = re.split(r'[\s\,]+', 'a, b  , ,c')
    print(str) # ['a', 'b', 'c']
    
    • 字符串分组:正则表达式还有提取子串的强大功能,用()表示的就是要提取的分组。如:^(\d{3})-(\d{3,8})$ 定义了两个组,可以直接从匹配的字符串中提取出区号和本地号码。
    match = re.match(r'^(\d{3})\-(\d{3,8}$)', '021-6444651')
    print(match.group(0))#021-6444651
    print(match.group(1))#021
    print(match.group(2))#6444651
    

    【牢记】group(0)始终是原始字符串,group(1)、group(2)...表示第1、2...个子串。

    • 贪婪匹配:正则匹配默认是贪婪匹配,也就是匹配尽可能多的字符。例如:
    match = re.match(r'^(\d+?)(0*)$','10009000').groups()
    print(match) #('1000','9000')
    
    • 正则表达式的预编译:如果一个正则表达式要重复使用多次次,出于效率的考虑,我们可以预编译该正则表达式,接下来使用时跳过编译编译,直接匹配。
     import re
    # 编译: 
     re_telephone = re.compile(r'^(\d{3})-(\d{3,8})$')
    

    相关文章

      网友评论

          本文标题:Python正则表达式进阶

          本文链接:https://www.haomeiwen.com/subject/gpdmkftx.html