• re模块,正则表达式


    re模块

    作用:取文本或者字符串内你所需要的东西

    正则表达式的大致匹配过程是:依次拿出表达式和文本中的字符比较,如果每一个字符都能匹配,则匹配成功;一旦有匹配不成功的字符则匹配失败。

    • ^叫做元字符,元字符会有特殊的意义,匹配开头的,也就是说他只从开头找
    res= re.findall('^孙悟空',s)
    
    • $结尾:
    res = re.findall('西瓜$',s)
    
    • |,相当于or
    res = re.findall('孙悟空|猪八戒',s)
    
    • [],找到[]内的所有元素
    • .,任意一个字符
    • {3},大括号前面的字符匹配3次
    • *,前面字符匹配无穷个,0-∞个
    • +,前面的字符,1-∞个
    • ?,前面的字符0-1个
    • d,匹配数字
    • D,除了数字都匹配到了
    • s,匹配空
    • S,匹配非空
    • w,字母,数字,下划线
    • W,非字母,数字,下划线

    贪婪模式和非贪婪模式

    正则表达式通常用于在文本中查找匹配的字符串。Python里数量词默认是贪婪的(在少数语言里也可能是默认非贪婪),总是尝试匹配尽可能多的字符;非贪婪的则相反,总是尝试匹配尽可能少的字符。例如:正则表达式"ab*"如果用于查找"abbbc",将找到"abbb"。而如果使用非贪婪的数量词"ab*?",将找到"a"。

    a=[abbbbbb]
    res=findall('ab*?',a)
    print(res) #['ab']
    

    match和search

    区别在于,match从开头开始匹配找一个,search搜索所有找第一个

    import re
    s = '猪八戒找媳妇猪八戒'
    match_res = re.match('猪八戒',s)  # 从开头开始匹配,取一个
    print(match_res.group())
    
    search_res = re.search('猪八戒',s)  # 搜索一个
    print(search_res.group())
    
    # match 和 search的区别,mathch从开头开始匹配找一个,search搜索所有找第一个
    

    分组

    需要括号里的东西就行了,括号外的东西就不打印了

    import re
    
    s = '猪八戒的媳妇是高翠兰,孙悟空的媳妇是白骨精,唐僧的媳妇是女儿国王,沙悟净没有媳妇(py9的学生们)'
    
    res = re.findall('(.*?)的媳妇是(.*?)(,)',s)
    print(res)
    
    [('猪八戒', '高翠兰', ','), ('孙悟空', '白骨精', ','), ('唐僧', '女儿国王', ',')]
    

    re.split()

    就是字符串的split方法,区别是可以使用正则表达式去替换

    res = re.split('d+',s)
    

    sub和subn

    他们都是替换内容,但是subn会计算替换了多少次,类似于字符串的replace内置范方法

    import re
    
    s = '猪八戒的媳妇是1高翠兰,孙悟空的媳妇是2白骨精,唐僧的媳妇是3女儿国王,沙悟净6没有媳妇(py9的学生们)'
    
    print(re.sub('d','',s))
    
    print(re.subn('d','',s))  # 除了会修改内容,还会返回修改了多少次
    
    猪八戒的媳妇是高翠兰,孙悟空的媳妇是白骨精,唐僧的媳妇是女儿国王,沙悟净没有媳妇(py的学生们)
    ('猪八戒的媳妇是高翠兰,孙悟空的媳妇是白骨精,唐僧的媳妇是女儿国王,沙悟净没有媳妇(py的学生们)', 5)
    
  • 相关阅读:
    nodejs 核心模块crypto
    es6新特性学习
    nodejs 常用全局包
    ionic+angular+cordova 安卓环境搭建
    谷歌浏览器调试保存到文件
    Linux命令
    Linux中用户管理详解(上)-Linux学习日记
    liunx下忘记root密码的解决方法
    cvCanny的参数
    VC运行时库(/MD、/MT等)
  • 原文地址:https://www.cnblogs.com/zhoajiahao/p/11046474.html
Copyright © 2020-2023  润新知