• 【正则】详解python正则表达式之re.match()与re.search()的用法


    1、re.match()的用法

    re.match()方法是从起始位置开始匹配一个模式,匹配成功返回一个对象,未匹配成功返回None。

    语法:

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

    参数说明:

    pattern:匹配的正则表达式;

    string:要匹配的字符串;

    flags:标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等;

    示例如下:

    1. #!/usr/bin/env python
    2. # -*- coding:utf-8 -*-
    3. import re
    4. if __name__ == '__main__':
    5. # 匹配模式
    6. test_pattern = r"\d{2}年"
    7. # 待匹配的字符串
    8. test = "18年2019年2020年"
    9. print(re.match(test_pattern, test).group())

    输出:

    1. 18
    2. Process finished with exit code 0

    若将匹配模式改成:

    1. #!/usr/bin/env python
    2. # -*- coding:utf-8 -*-
    3. import re
    4. if __name__ == '__main__':
    5. # 匹配模式
    6. test_pattern = r"\d{4}年"
    7. # 待匹配的字符串
    8. test = "18年2019年2020年"
    9. print(re.match(test_pattern, test))

    则返回结果为:

    1. None
    2. Process finished with exit code 0

    这是因为re.match()仅从头开始匹配,由于起始位置处未找到符合匹配模式的内容,返回None。

    2、re.search()的用法

    re.search()方法是扫描整个字符串内进行模式匹配,只要找到第一个匹配就返回,如果字符串没有匹配,则返回None。

    语法:

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

    参数说明:

    pattern:匹配的正则表达式;

    string:要匹配的字符串;

    flags:标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等;

    示例如下:

    1. #!/usr/bin/env python
    2. # -*- coding:utf-8 -*-
    3. import re
    4. if __name__ == '__main__':
    5. # 匹配模式
    6. test_pattern = r"\d{4}年"
    7. # 待匹配的字符串
    8. test = "18年2019年2020年"
    9. print(re.search(test_pattern, test).group())

    输出:

    1. 2019
    2. Process finished with exit code 0

    这是因为re.search()扫描整个字符串,找到符合匹配模式的第一个匹配就返回了。

    3、re.match()与re.search()的区别

    re.match()方法要求必须从字符串的开头进行匹配,如果字符串开头不符合模式规则,整个匹配就失败了,函数返回None;

    re.search()并不要求必须从字符串的开头进行匹配,而是扫描整个字符串,直到找到第一个匹配。

  • 相关阅读:
    矩阵分析与应用-17-Moore-Penrose逆矩阵01
    从零开始:PRD产品需求文档怎么写
    基于海鸥算法优化的lssvm回归预测-附代码
    【IC卡】终极版复卡器操作方法 ID卡读取方法
    Error: EMFILE: too many open files : 往服务器一次性传输文件数太多
    3年软件测试经验面试要求月薪22K,明显感觉他背了很多面试题...
    RocketMQ系列(一) 基本介绍
    Qt开发-QT Widgets
    如何使用ai去水印?用这款就够了
    mybatis02
  • 原文地址:https://blog.csdn.net/kevinjin2011/article/details/125598411