• 13.3 正则表达式的应用


    欢迎来到我的博客,很高兴能够在这里和您见面!欢迎订阅相关专栏:
    工💗重💗hao💗:野老杂谈
    ⭐️ 全网最全IT互联网公司面试宝典:收集整理全网各大IT互联网公司技术、项目、HR面试真题.
    ⭐️ AIGC时代的创新与未来:详细讲解AIGC的概念、核心技术、应用领域等内容。
    ⭐️ 全流程数据技术实战指南:全面讲解从数据采集到数据可视化的整个过程,掌握构建现代化数据平台和数据仓库的核心技术和方法。
    ⭐️ 构建全面的数据指标体系:通过深入的理论解析、详细的实操步骤和丰富的案例分析,为读者提供系统化的指导,帮助他们构建和应用数据指标体系,提升数据驱动的决策水平。
    ⭐️《遇见Python:初识、了解与热恋》 :涵盖了Python学习的基础知识、进阶技巧和实际应用案例,帮助读者从零开始逐步掌握Python的各个方面,并最终能够进行项目开发和解决实际问题。

    摘要

    正则表达式(Regular Expression)是一种强大的文本处理工具,广泛应用于数据清洗、验证输入、文本搜索和替换等任务中。本文将通过一系列生动有趣的实际例子,带你深入了解正则表达式在日常编程中的具体应用。无论你是处理网页数据、验证用户输入,还是进行批量文本替换,正则表达式都能为你提供高效、精准的解决方案。

    目录
    1. 正则表达式简介
    2. 验证用户输入
      • 验证电子邮件地址
      • 验证电话号码
    3. 文本搜索与提取
      • 从网页提取信息
      • 匹配日期格式
    4. 文本替换
      • 批量替换敏感词
      • 标准化数据格式
    5. 数据清洗
      • 删除多余空白字符
      • 提取和清理日志文件
    6. 总结

    1. 正则表达式简介

    如果你曾经在海量的文本中寻找某个特定的单词,或者需要从一堆混乱的数据中提取出有用的信息,那么你就会发现正则表达式是一种无比高效的工具。正则表达式允许你定义复杂的模式来匹配和操作文本数据,简直像是一位无所不能的文本魔法师。

    想象一下,你是一位古代的抄书匠,手里有一本满是错误和涂改的古籍,而你的任务是把其中的错误都挑出来并修正。正则表达式就像是你的魔法卷轴,能够帮你轻松地完成这个任务。

    在 Python 中,我们使用 re 模块来处理正则表达式。让我们从一些简单的例子开始,看看正则表达式如何让你变成文本处理的高手。

    2. 验证用户输入

    在处理用户输入时,数据的格式正确性是首要考虑的。例如,用户提交的电子邮件地址和电话号码必须符合标准格式,否则可能导致数据处理出错。

    验证电子邮件地址

    验证电子邮件地址是一个典型的应用场景。正则表达式能够快速检查用户输入的邮箱是否有效:

    import re
    
    email_pattern = r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}"
    email = "user@example.com"
    
    if re.fullmatch(email_pattern, email):
        print("Valid email address")
    else:
        print("Invalid email address")
    

    在这个例子中,我们定义了一个正则表达式模式来匹配常见的电子邮件地址格式。这个模式要求邮箱的用户名部分可以包含字母、数字、点号、下划线、百分号、加号和减号,而邮箱的域名部分则由字母和数字组成,最后以一个点号和两到四个字母的顶级域结尾。

    验证电话号码

    同样地,我们可以使用正则表达式来验证电话号码的格式:

    phone_pattern = r"\b\d{3}[-.]?\d{3}[-.]?\d{4}\b"
    phone_number = "123-456-7890"
    
    if re.fullmatch(phone_pattern, phone_number):
        print("Valid phone number")
    else:
        print("Invalid phone number")
    

    这个正则表达式模式允许匹配美国电话号码格式,它可以是带连字符或点的格式,也可以是没有分隔符的纯数字格式。

    3. 文本搜索与提取

    正则表达式在文本搜索和提取中也非常有用,特别是在从网页数据或日志文件中提取有用信息时。

    从网页提取信息

    假设你需要从一段 HTML 内容中提取所有的超链接( 标签):

    html_content = '''
    Example
    Test
    '''
    
    links = re.findall(r'href="(https?://[^\"]+)"', html_content)
    print("Extracted links:", links)
    

    在这个例子中,正则表达式 href="(https?://[^\"]+)" 匹配所有的 href 属性,并提取其中的 URL。这里的 https? 表示匹配 httphttps,而 [^\"]+ 表示匹配任意数量的非双引号字符。

    匹配日期格式

    你可能需要从一段文本中提取所有的日期,例如格式为 YYYY-MM-DD 的日期:

    text = "The event is scheduled for 2024-08-10 and the deadline is 2024-08-15."
    dates = re.findall(r"\b\d{4}-\d{2}-\d{2}\b", text)
    print("Found dates:", dates)
    

    这个正则表达式模式 \b\d{4}-\d{2}-\d{2}\b 匹配由四位数字表示的年份、两位数字表示的月份和两位数字表示的日期。

    4. 文本替换

    正则表达式不仅可以查找和提取文本,还可以用来替换文本内容。例如,你可以使用它来进行批量的文本替换操作。

    批量替换敏感词

    假设你有一个文本文件,里面包含了一些敏感词汇,而你想要将这些词汇替换为 ***

    text = "This is a secret message with sensitive information."
    censored_text = re.sub(r"\bsecret\b|\bsensitive\b", "***", text)
    print("Censored text:", censored_text)
    

    在这个例子中,正则表达式 \bsecret\b|\bsensitive\b 匹配单词 secretsensitive,并将其替换为 ***

    标准化数据格式

    有时,你需要对数据格式进行标准化。例如,将一组电话号码格式化为统一的格式:

    phone_numbers = ["1234567890", "123.456.7890", "123-456-7890"]
    formatted_numbers = [re.sub(r"[^\d]", "-", number) for number in phone_numbers]
    print("Formatted numbers:", formatted_numbers)
    

    在这个例子中,正则表达式 "[^\d]" 匹配所有非数字字符,并将其替换为 -,使电话号码格式统一。

    5. 数据清洗

    数据清洗是数据科学中不可或缺的一步,正则表达式在删除多余字符和提取有用信息方面大显身手。

    删除多余空白字符

    你可能需要清理文本中的多余空白字符,使得文本内容更为整洁:

    text = "This   is  an  example   text."
    clean_text = re.sub(r"\s+", " ", text)
    print("Cleaned text:", clean_text)
    

    在这个例子中,\s+ 匹配一个或多个空白字符,并将它们替换为单个空格。

    提取和清理日志文件

    正则表达式也可以用于从日志文件中提取有用的信息,比如 IP 地址:

    log = "User accessed from IP 192.168.1.1 on 2024-08-10"
    ip_pattern = r"\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b"
    ip_address = re.search(ip_pattern, log)
    
    if ip_address:
        print("Found IP address:", ip_address.group())
    

    这个正则表达式模式 \b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b 匹配常见的 IPv4 地址格式,并能从日志文件中提取这些地址。

    6. 总结

    正则表达式作为一种强大的工具,在文本处理和数据清洗中发挥了重要作用。本文介绍了一些常见的正则表达式应用场景,如用户输入验证、文本搜索与提取、文本替换和数据清洗。通过学习这些内容,你可以在实际工作中灵活运用正则表达式,提高代码的效率和准确性。


    标签
    • 正则表达式
    • Python
    • 文本处理
    • 数据清洗
    • 编程技巧

    在这里插入图片描述

  • 相关阅读:
    哪个券商支持网格交易功能,条件单功能强大,交易手续费低
    【SpringBoot】
    nodejs+vue+elementui素食主义宣传网站
    网络基本类型
    Unity JobSystem使用及技巧
    45岁大龄程序员自述:我居然还苟在程序人生里,但是已经难以为继
    Chapter1 Beginning Bash
    深度解析:用Python爬虫逆向破解dappradar的URL加密参数(最详细逆向实战教程,小白进阶高手之路)
    js三角形
    【JavaWeb】简易权限校验、Filter-程序跳转
  • 原文地址:https://blog.csdn.net/u010225915/article/details/141068368