• 从基础知识到应用实例,一站式掌握 Python 正则表达式


    前言

    大家好,我是阔升。今天,我要和大家聊聊 Python 中的正则表达式。正则表达式可谓是编程界的“瑞士军刀”,能用来处理各种复杂的字符串操作。本文将通过几个有趣的例子,带你学习正则表达式。

    正则表达式基础

    在 Python 中,我们主要使用 re 模块来处理正则表达式。首先,我们先来了解几个基本概念和常用操作。

    导入 re 模块

    import re
    

    匹配模式

    • . 匹配任意一个字符(除了换行符)
    • ^ 匹配字符串的开始
    • $ 匹配字符串的结尾
    • * 匹配前面的字符零次或多次
    • + 匹配前面的字符一次或多次
    • ? 匹配前面的字符零次或一次
    • {n} 匹配前面的字符恰好 n 次
    • {n,} 匹配前面的字符至少 n 次
    • {n,m} 匹配前面的字符至少 n 次,至多 m 次

    正则表达式实例讲解

    1. 匹配邮箱地址

    正则表达式可以用来匹配邮箱地址。一个简单的邮箱地址匹配模式如下:

    import re
    
    # 匹配邮箱地址的正则表达式
    pattern = r'[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+'
    email = "example@example.com"
    
    # 使用 re.match() 匹配邮箱地址
    match = re.match(pattern, email)
    if match:
        print("邮箱格式正确")
    else:
        print("邮箱格式不正确")
    

    运行结果

    邮箱格式正确
    

    2. 提取电话号码

    假设我们要从一段文本中提取出所有的电话号码:

    import re
    
    # 示例文本
    text = "联系人:小明,电话:010-12345678;联系人:小红,电话:020-87654321。"
    
    # 匹配电话号码的正则表达式
    pattern = r'\d{3}-\d{8}|\d{4}-\d{7}'
    
    # 使用 re.findall() 提取电话号码
    phones = re.findall(pattern, text)
    print("找到的电话号码:", phones)
    

    运行结果

    找到的电话号码: ['010-12345678', '020-87654321']
    

    3. 替换文本中的敏感词

    有时候我们需要将文本中的敏感词替换为其他字符:

    import re
    
    # 示例文本
    text = "这里有一些敏感词,比如赌博,毒品。"
    
    # 匹配敏感词的正则表达式
    pattern = r'赌博|毒品'
    
    # 使用 re.sub() 替换敏感词
    replaced_text = re.sub(pattern, '**', text)
    print("替换后的文本:", replaced_text)
    

    运行结果

    替换后的文本: 这里有一些敏感词,比如**,**。
    

    常用正则表达式函数

    re.match()

    re.match 用于从字符串的起始位置匹配一个模式:

    import re
    
    # 示例模式和字符串
    pattern = r'\d+'
    string = "123abc"
    
    # 使用 re.match() 从起始位置匹配
    result = re.match(pattern, string)
    if result:
        print("匹配成功:", result.group())
    else:
        print("匹配失败")
    

    运行结果

    匹配成功: 123
    

    re.search()

    re.search 用于扫描整个字符串并返回第一个成功的匹配:

    import re
    
    # 示例模式和字符串
    pattern = r'\d+'
    string = "abc123def"
    
    # 使用 re.search() 扫描整个字符串
    result = re.search(pattern, string)
    if result:
        print("匹配成功:", result.group())
    else:
        print("匹配失败")
    

    运行结果

    匹配成功: 123
    

    re.findall()

    re.findall 返回字符串中所有非重叠的匹配模式:

    import re
    
    # 示例模式和字符串
    pattern = r'\d+'
    string = "abc123def456ghi789"
    
    # 使用 re.findall() 找到所有匹配
    results = re.findall(pattern, string)
    print("所有匹配项:", results)
    

    运行结果

    所有匹配项: ['123', '456', '789']
    

    re.sub()

    re.sub 用于替换字符串中匹配的模式:

    import re
    
    # 示例文本
    text = "今天的温度是30度,明天的温度是28度。"
    
    # 匹配数字的正则表达式
    pattern = r'\d+'
    
    # 使用 re.sub() 替换数字
    replaced_text = re.sub(pattern, 'XX', text)
    print("替换后的文本:", replaced_text)
    

    运行结果

    替换后的文本: 今天的温度是XX度,明天的温度是XX度。
    

    结语

    正则表达式在 Python 中是一个非常强大的工具,掌握它能够大大提高我们处理字符串的效率。希望通过本文的讲解,大家能对正则表达式有一个更全面的理解。如果你有任何问题或建议,欢迎在评论区留言,我们下期再见!


    记得给这篇文章点个赞,分享给更多的朋友哦!你的支持是我创作的最大动力!

    Happy coding! 😄

  • 相关阅读:
    西电数据挖掘实验1——二分网络上的链路预测
    DeOldify 接口化改造 集成 Flask
    华为OD机考算法题:字符串比较
    [静态时序分析简明教程(八)]虚假路径
    DirectX 12 学习笔记 -结构
    Spring Security —漏洞防护—跨站请求伪造(CSRF)
    CSP-J/S 报名全攻略(含考纲)
    【Asesprite】快速自制Tileset瓦片地图集(俯视角)
    【MySQL运行原理篇】底层运行结构
    C++ 炼气期之数据是主角
  • 原文地址:https://blog.csdn.net/qq_46442797/article/details/140374223