• python re模块


    模块介绍

    re 模块,它提供 Perl 风格的正则表达式模式。re 模块使 Python 语言拥有全部的正则表达式功能。re 模块也提供了与这些方法功能完全一致的函数,这些函数使用一个模式字符串做为它们的第一个参数。

    模块函数

    1、match函数

    re.match(pattern, string, flags=0)
    
    • 1

    参数pattern表示匹配的正则表达式,参数string表示要匹配的字符串,参数flags表示用于控制正则表达式的匹配方式,多个标志可以通过按位 OR(|) 它们来指定。可选的值如下:

    修饰符描述
    re.I使匹配对大小写不敏感
    re.L做本地化识别(locale-aware)匹配
    re.M多行匹配,影响 ^ 和 $
    re.S使 . 匹配包括换行在内的所有字符
    re.U根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B.
    re.X该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。

    re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。

    >>> pattern = r"Cats"
    >>> string = "Cats are smarter than dogs"
    >>> re.match(pattern, string)
    <re.Match object; span=(0, 4), match='Cats'>
    # 设置flags=re.I使表达式对大小写不敏感
    >>> pattern = r"cats"
    >>> re.match(pattern, string, flags=re.I)
    <re.Match object; span=(0, 4), match='Cats'>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    2、search函数

    re.search(pattern, string, flags=0)
    
    • 1

    扫描整个字符串并返回第一个成功的匹配。

    >>> pattern = r"are"
    >>> string = "Cats are smarter than dogs"
    >>> re.match(pattern, string)
    None
    >>> re.search(pattern, string)
    <re.Match object; span=(5, 8), match='are'>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    re.match 只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回 None,而 re.search 匹配整个字符串,直到找到一个匹配。

    3、sub函数

    re.sub(pattern, repl, string, count=0, flags=0)
    
    • 1

    用指定字符串替换字符串中的匹配项。参数pattern表示匹配的正则表达式,参数repl表示替换的字符串,参数string表示要匹配的字符串,参数count表示模式匹配后替换的最大次数,默认 0 表示替换所有的匹配,参数flags表示正则表达式的匹配方式。

    # 用is替换字符串中的are
    >>> pattern = r"are"
    >>> string = "Cats are smarter than dogs"
    >>> repl = "is"
    >>> re.sub(pattern, repl, string)
    'Cats is smarter than dogs'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    4、compile函数

    re.compile(pattern, flags=0)
    
    • 1

    编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 、findall()、sub()等多个函数使用。

    >>> pattern = re.compile(r"cats", flags=re.I)
    >>> pattern
    re.compile('cats', re.IGNORECASE)
    >>> pattern.match("Cats are smarter than dogs")
    <re.Match object; span=(0, 4), match='Cats'>
    >>> pattern.search("Cats are smarter than dogs")
    <re.Match object; span=(0, 4), match='Cats'>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    5、findall函数

    re.findall(pattern, string, flags=0)
    
    • 1

    在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果有多个匹配模式,则返回元组列表,如果没有找到匹配的,则返回空列表。

    >>> pattern = r"\d+"
    >>> string = "123 is not 12 and 3"
    >>> re.match(pattern, string)
    <re.Match object; span=(0, 3), match='123'>
    >>> re.search(pattern, string)
    <re.Match object; span=(0, 3), match='123'>
    >>> re.findall(pattern, string)
    ['123', '12', '3']
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    注意: match 和 search 是匹配一次 ,而findall 匹配所有。

    6、finditer函数

    re.finditer(pattern, string, flags=0)
    
    • 1

    在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回。

    >>> pattern = r"\d+"
    >>> string = "123 is not 12 and 3"
    >>> re.findall(pattern, string)
    ['123', '12', '3']
    >>> re.finditer(pattern, string)
    <callable_iterator object at 0x0000029B2DEA3EE0>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    7、split函数

    re.split(pattern, string, maxsplit=0, flags=0)
    
    • 1

    按照能够匹配的子串将字符串分割后返回列表。参数maxsplit表示分割次数,maxsplit=1 分割一次,默认为 0,不限制次数。

    >>> pattern = r"\d+"
    >>> string = "123 is not 12 and 3"
    >>> re.split(pattern, string)
    ['', ' is not ', ' and ', '']
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    Redis主从复制基础概念
    MQTT-主题基础
    C语言 do while循环练习 上
    民安:揭示环评问题与提出解决之道
    三、c++代码中的安全风险-open
    No166.精选前端面试题,享受每天的挑战和学习
    华为c语言编程规范
    C++17结构化绑定
    cyber搜索引擎
    Day01SSM第一次笔记---Spring认识与各种注入
  • 原文地址:https://blog.csdn.net/weixin_49346755/article/details/125473356