2.1 re模块介绍

文摘   2024-07-02 23:09   云南  

【目录】


  • 1.正则表达式

  • 2.正则表达式的应用

  • 3.正则表达式应用示例

    • 3.1 电子邮件验证

    • 3.2 手机号码验证

    • 3.3 网址验证

    • 3.4 IP地址验证

  • 4.re模块

  • 5.re模块导入

  • 6.正则表达式的构成

  • 7.参考文档

欢迎小伙伴们加我微信xyz77520520

【正文】

学习时间15分钟。

1.正则表达式

RegEx[ˈreɡeks]:正则表达式。

正则表达式,又称规则表达式,(Regular Expression,在代码中常简写为regex、regexp或RE)。
正则表达式是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符"),是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串,通常被用来检索、替换那些符合某个模式(规则)的文本。

2.正则表达式的应用

正则表达式(RegEx)是一种文本模式描述的语法,用于在文本中查找、替换、匹配和解析具有特定规律的字符串。

  1. 数据验证

  • 正则表达式能够验证用户输入是否符合特定的格式要求,例如电子邮件地址、手机号码等。
  • 通过正则表达式,可以确保用户输入的数据准确、一致,并符合预定义的规则,从而维护数据的完整性。
  • 数据提取

    • 从大量文本中提取特定信息,如抓取网页中的链接或提取日志文件中的关键信息。
    • 在数据分析中,正则表达式用于从原始数据中提取有用的信息,如从日志文件中提取错误信息等。
  • 日志解析

    • 正则表达式能够处理日志文件,从中提取关键数据,如错误消息、用户活动等。
    • 通过正则表达式,可以快速定位日志中的问题,提高问题诊断的效率。
  • 搜索替换

    • 在文本编辑器、编程语言或命令行中,使用正则表达式进行字符串匹配和替换操作。
    • 正则表达式可以快速找到符合特定模式的字符串,并进行相应的替换,提高文本处理的效率。
  • 数据清洗

    • 在处理大量文本数据时,使用正则表达式进行筛选、过滤和清理。
    • 删除无关内容、替换错误数据或者格式化文本等,使数据更加干净和可用。
  • URL路由

    • 在Web开发中,使用正则表达式定义URL路由规则和进行路由匹配。
    • 匹配不同的URL路径,并将请求转发给相应的处理程序,提高Web应用的灵活性和可扩展性。

    3.正则表达式应用示例

    下面的代码仅做了解,不用深究,后面的课程会有详细讲解。

    3.1 电子邮件验证

    目标:验证电子邮件地址是否符合标准格式。

    【代码示例】

    import re  # 导入正则表达式模块

    # 定义一个电子邮件地址字符串
    email = "example@example.com"  
    # 定义一个用于匹配电子邮件地址的正则表达式模式
    pattern = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b' 
    # 使用re.match()函数检查电子邮件地址是否与模式匹配
    if re.match(pattern, email):  
        
        print("Valid email")  # 如果匹配,输出“Valid email”
    else:
        print("Invalid email")  # 如果不匹配,输出“Invalid email”

    3.2 手机号码验证

    目标:验证手机号码是否符合特定国家或地区的格式。

    【代码示例】

    # 导入正则表达式模块
    import re  

    # 定义一个电话号码字符串
    phone_number = "+1 (555) 123-4567"  
    # 定义一个匹配电话号码的正则表达式模式
    pattern = r'^\+\d{1,3} \(\d{3}\) \d{3}-\d{4}$'  
    # 使用re.match()函数检查电话号码是否与模式匹配
    if re.match(pattern, phone_number):
        # 如果匹配,输出“Valid phone number”
        print("Valid phone number")  
    else:
        # 如果不匹配,输出“Invalid phone number”
        print("Invalid phone number")  

    3.3 网址验证

    目标:验证URL是否有效。

    【代码示例】

    # 导入正则表达式模块
    import re 
    # 定义一个网址字符串
    url = "https://www.example.com"  
    # 定义一个匹配网址的正则表达式模式
    pattern = r'^(http|https)://[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$'  
    # 使用re.match()函数检查网址是否与模式匹配
    if re.match(pattern, url):
        # 如果匹配,输出“Valid URL”
        print("Valid URL")  
    else:
        # 如果不匹配,输出“Invalid URL”
        print("Invalid URL")  

    3.4 IP地址验证

    目标:验证IPv4地址的有效性。

    【代码示例】

    # 导入正则表达式模块
    import re  

    # 定义一个IP地址字符串
    ip_address = "192.168.1.1"  
    # 定义一个匹配IP地址的正则表达式模式
    pattern = (r'^(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.'
                r'(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.'
                r'(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.'
                r'(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$')
    # 使用re.match()函数检查IP地址是否与模式匹配
    if re.match(pattern, ip_address):
        print("Valid IP address")  # 如果匹配,输出“Valid IP address”
    else:
        print("Invalid IP address")  # 如果不匹配,输出“Invalid IP address”

    4.re模块

    Python 提供了re模块用于实现正则表达式的操作。在编程中,可以使用re模块提供的方法,如match( )、findall( )等进行字符串处理。

    知识拓展:使用dir()函数查询re模块的函数方法个数(仅做了解)。

    【代码示例】

    import re  # 导入re模块
    import inspect  # 导入inspect模块

    attributes_and_methods = dir(re)  # 获取re模块中的所有属性和方法
    functions = []  # 创建一个空列表来存储函数名称

    for item in attributes_and_methods:
        if inspect.isfunction(getattr(re, item)):  # 检查是否为函数
            functions.append(item)  # 如果是函数,则添加到列表中

    num_methods = len(functions)  # 计算方法的个数

    print("re模块提供了", num_methods, "个方法。")
    print("re模块的函数分别是:")
    for function in functions:
        print(function)

    【终端输出】

    re模块提供了 16 个方法。
    re模块的函数分别是:
    _compile
    _expand
    _pickle
    _subx
    compile
    escape
    findall
    finditer
    fullmatch
    match
    purge
    search
    split
    sub
    subn
    template

    5.re模块导入

    re模块在使用时,需要先用import语句导入。

    【代码示例】

    import re

    6.正则表达式的构成

    1. 字符:普通的字符,如 abc 等,用于匹配对应的字符。

    2. 字符类:使用方括号 [] 定义的一组字符,用于匹配其中的任意一个字符。例如,[abc] 匹配 "a"、"b" 或 "c"。

    3. 量词:用于指定前面的字符或字符类出现的次数。常见的量词有 *(零次或多次)、+(一次或多次)、?(零次或一次)、{n}(精确重复 n 次)和 {n,m}(重复 n 到 m 次)。

    4. 选择符:通过竖线 | 分隔不同的模式,表示匹配其中任意一个模式。例如,a|b 匹配 "a" 或 "b"。

    5. 分组:通过圆括号 () 将多个字符组合在一起,形成一个整体。这在需要对整个组应用量词时非常有用。例如,(ab)+ 匹配一个或多个连续的 "ab"。

    6. 锚定符:用于指定匹配的位置。例如,^ 表示字符串的开始,$ 表示字符串的结束,\b 表示单词边界等。

    7. 特殊字符:一些具有特殊含义的字符,如 . 表示任意单个字符,* 表示前面的字符可以出现零次或多次等。

    8. 转义字符:通过反斜杠 \ 转义特殊字符,使其失去特殊含义并作为普通字符进行匹配。例如,\. 匹配点号 "."。

    9. 注释:在正则表达式中,可以使用 # 添加注释,以便对正则表达式进行解释和说明。

    10. 模式修饰符:在正则表达式的末尾,可以添加模式修饰符来改变匹配的行为。例如,i 表示忽略大小写,g 表示全局匹配,m 表示多行匹配等。

    7.参考文档

    re模块官方文档链接:https://docs.python.org/3/library/re.html


    安迪python学习笔记
    python学习笔记,适合初学者。
     最新文章