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

    使用正常表达式

    # 导入re模块
    import re
    
    # 使用match方法进程匹配操作
    result = re.match(正则表达式,要匹配的字符串)
    
    # 如果上一步匹配到数据的话, 可以使用group方法来提取数据
    result.group()
    

    简单示例

    In [1]: import re                                                                                                                                                                                                   
    
    In [2]: re.match(r"hello", "hello world")                                                                                                                                                                           
    Out[2]: <re.Match object; span=(0, 5), match='hello'>
    
    In [3]: re.match(r"Hello", "hello world")                                                                                                                                                                           
    
    In [4]: re.match(r"[Hh]ello", "hello world")                                                                                                                                                                        
    Out[4]: <re.Match object; span=(0, 5), match='hello'>
    

    匹配规则

    单个

    In [8]: re.match(r"速度与激情d", "速度与激情1")                                                                                                                                                                    
    Out[8]: <re.Match object; span=(0, 6), match='速度与激情1'>
    
    In [18]: re.match(r"速度与激情d*", "速度与激情11").group()                                                                                                                                                         
    Out[18]: '速度与激情11'
    
    

    多个

    开头结尾

    匹配分组

    # 判断变量名是否合法
    import re
    
    def main():
        names = ["age", "_age", "1age", "age1", "a_age", "age_1_", "age!", "a#123"]
    
        for name in names:
            ret = re.match(r"[a-zA-Z_][a-z0-9A-Z_]*$", name)
            if ret:
                print("变量名:%s 符合要求...通过正则匹配出来的字符是:%s" % (name, ret.group()))
            else:
                print("变量名:%s 不符合要求...." % name)
    
    if __name__ == '__main__':
        main()
    

    高级功能

    import re
    
    # 只找一次
    ret = re.search(r"d+", "阅读测试为 9999,点赞次数为:100")
    
    if ret:
        print(ret.group())
    else:
        print("None")
    

    findall

    # 查找所有,返回一个数组
    ret = re.findall(r"d+", "阅读测试为 9999,点赞次数为:100")
    
    if ret:
        print(ret)
    else:
        print(ret)
    

    sub 将匹配到的数据进行替换

    # 方法 1
    import re
    
    ret = re.sub(r"d+", '998', "python = 997")
    print(ret)
    
    # 方法 2
    import re
    
    def add(temp):
        strNum = temp.group()
        num = int(strNum) + 1
        return str(num)
    
    ret = re.sub(r"d+", add, "python = 997")
    print(ret)
    
    ret = re.sub(r"d+", add, "python = 99")
    print(ret)
    

    split 根据匹配进行切割字符串,并返回一个列表

    需求:切割字符串“info:xiaoZhang 33 shandong”

    #coding=utf-8
    import re
    
    ret = re.split(r":| ","info:xiaoZhang 33 shandong")
    print(ret)
    
    # 结果
    ['info', 'xiaoZhang', '33', 'shandong']
    

    练习,分析网页内容

    
    import re
    
    info = '''<div>
            <p>岗位职责:</p>
    <p>完成推荐算法、数据统计、接口、后台等服务器端相关工作</p>
    <p><br></p>
    <p>必备要求:</p>
    <p>良好的自我驱动力和职业素养,工作积极主动、结果导向</p>
    <p>&nbsp;<br></p>
    <p>技术要求:</p>
    <p>1、一年以上 Python 开发经验,掌握面向对象分析和设计,了解设计模式</p>
    <p>2、掌握HTTP协议,熟悉MVC、MVVM等概念以及相关WEB开发框架</p>
    <p>3、掌握关系数据库开发设计,掌握 SQL,熟练使用 MySQL/PostgreSQL 中的一种<br></p>
    <p>4、掌握NoSQL、MQ,熟练使用对应技术解决方案</p>
    <p>5、熟悉 Javascript/CSS/HTML5,JQuery、React、Vue.js</p>
    <p>&nbsp;<br></p>
    <p>加分项:</p>
    <p>大数据,数理统计,机器学习,sklearn,高性能,大并发。</p>
    
            </div>'''
    
    # print(info)
    
    # 匹配不是 > 的字符,一次或多次
    ret = re.sub(r"(<[^>]*>|&nbsp;)","",info)
    
    print(ret)
    
  • 相关阅读:
    JAVA_SE基础——59.权限访问修饰符
    JAVA_SE基础——58.如何用jar命令对java工程进行打包
    JAVA_SE基础——57.有了包之后类与类之间的访问使用import语句
    JAVA_SE基础——56.包的创建
    JAVA_SE基础——55.自定义异常类
    JAVA_SE基础——54.异常
    JAVA_SE基础——53.什么是异常?
    Spring整合Mybatis
    Mybatis的ResultMap结果集映射、日志、分页
    Java中的值传递机制
  • 原文地址:https://www.cnblogs.com/liudianer/p/11883849.html
Copyright © 2011-2022 走看看