我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python之re库用法细讲

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python之re库用法细讲

文章目录


前言

  在之前的博客中我们学习了【正则表达式】的诸多用法,但是还没有真正在Python代码中使用过。其实Python语言专门提供了 re 模块,用于实现正则表达式的操作。在实现时,可以使用 re 模块提供的方法(如 search()、match()、findall()等)进行字符串处理,也可以先使用 re 模块的 compile() 方法将模式字符串转换为正则表达式对象,然后再使用该正则表达式对象的相关方法来操作字符串,接下来就跟大家介绍一下 re 模块的详细用法。


一、使用 re 模块的前期准备工作

首先我们要知道 re 模块是Python语言内置的,不用额外安装。但在使用时需要先用 import 语句引入该模块,代码如下:

import re

注意:在使用 re 模块时,一定要先 import 语句引入,否则会报错如下图所示。
在这里插入图片描述


二、使用 re 模块匹配字符串

  re 模块中提供了 match()search()findall() 等方法专门用来匹配字符串,可以从海量数据中精确筛选出需要的对象,我们逐一来看看每种方法的具体实现。

1. 使用 match() 方法进行匹配

  match() 方法用于从字符串的开始处进行匹配,如果在起始位置匹配成功,则返回 Match 对象,否则返回 None。其语法格式如下:

re.match(pattern, string, [flags])

参数说明

  • pattern:表示模式字符串,由要匹配的正则表达式转换而来。
  • string:表示要匹配的字符串。
  • flags:可选参数,表示标志位,用于控制匹配方式,如是否区分字母大小写、是否包括换行等等。常用的标志如下表所示。
标志说明
A 或 ASCII对于 \w、\W、\b、\B、\d、\D、\s 和 \S 只进行 ASCII 匹配(仅适用于Python3.x)
I 或 IGNORECASE执行不区分字母大小写的匹配
M 或 MULTILINE将 ^ 和 $ 用于包括整个字符串的开始和结尾的每一行(默认情况下,仅适用于整个字符串的开始和结尾处)
S 或 DOTALL使用(.)字符匹配所有字符,包括换行符
X 或 VERBOSE忽略模式字符串中未转义的空格和注释

看到表中这么多标志位,有的小伙伴应该已经懵了,这都是啥?
在这里插入图片描述

没关系,先通过下图的代码案例给大家细细道来。
在这里插入图片描述

  上面代码实现的功能是从给定的字符串 string 中按照指定的 pattern 模式来匹配有没有我们要的结果,pattern 语句中的代码意思是:该语句要以字符串 my_ 开头,\w+ 在之前的博客【Python之正则表达式细讲】中有讲过,是匹配字母、数字、下划线或汉字一次或多次,默认是贪婪匹配,也就是所有符合条件的都会匹配出来。但是结果为 None,也就是没有匹配到,因为待匹配字符串中是以大写字母开头的,而使用正则表达式匹配字符串时,默认是严格区分大小写的。所以如果要不区分字母大小写,就要加上可选参数 flags 来控制匹配方式,使用到标志位 I 或 IGNORECASE。如下图所示:
在这里插入图片描述

说明match() 方法从字符串的开始位置开始匹配,一旦当第一个字母不符合条件时,则不再进行匹配,直接返回 None,如下图代码所示。
在这里插入图片描述

  Match 对象中包含了匹配值的位置和匹配数据。其中,要获取匹配值的起始位置可以使用 Match 对象的 start() 方法;要获取匹配值的结束位置可以使用 end() 方法;通过 span() 方法可以返回匹配位置的元组;通过 string 属性可以获取要匹配的字符串;通过 group() 方法可以返回匹配到的结果。比如如下代码所示:

import restring = 'MY_PHONE my_phone'  # 要匹配的字符串pattern = r'my_\w+'  # 模式字符串match = re.match(pattern, string, re.I)  # 匹配字符串,设置为不区分大小写print('匹配值的起始位置:', match.start())print('匹配值的结束位置:', match.end())print('匹配位置的元组:', match.span())print('要匹配的字符串:', match.string)print('匹配数据:', match.group())

代码运行之后结果如下:

匹配值的起始位置: 0匹配值的结束位置: 8匹配位置的元组: (0, 8)要匹配的字符串: MY_PHONE my_phone匹配数据: MY_PHONE

  运行结果中匹配值的结束位置之所以是 8,是因为match() 方法匹配时,如果待匹配字符串中有多个符合规则的结果,也只返回第一个。 而匹配规则中 \w 是匹配字母、数字、下划线和汉字,所以匹配到中间空格那里第一个符合规则的结果就匹配结束了,即使后面有别的符合规则的结果,也不再进行匹配。

2. 使用 search() 方法进行匹配

  search() 方法用于在整个字符串中搜索第一个匹配的值,如果匹配成功,则返回 Match 对象,否则返回 None。search() 方法的语法格式如下:

re.search(pattern, string, [flags])

参数说明

  • pattern:表示模式字符串,由要匹配的正则表达式转换而来。
  • string:表示要匹配的字符串。
  • flags:可选参数,表示标志位,用于控制匹配方式,如是否区分字母大小写、是否包括换行等等。

代码示例如下图所示:
在这里插入图片描述

说明search() 方法不仅是在字符串的起始位置搜索,其他位置上有符合的匹配也可以进行搜索,但是最终不论待匹配字符串中有多少个符合的结果,也只会返回一个。

3. 使用 findall() 方法进行匹配

  findall() 方法用于在整个字符串中搜索所有符合正则表达式的字符串,并以列表的形式返回所有符合条件的结果。如果匹配不成功,返回空列表。findall() 方法的语法格式如下:

re.findall(pattern, string, [flags])

参数说明

  • pattern:表示模式字符串,由要匹配的正则表达式转换而来。
  • string:表示要匹配的字符串。
  • flags:可选参数,表示标志位,用于控制匹配方式,如是否区分字母大小写、是否包括换行等等。

代码示例如下图所示:
在这里插入图片描述

说明以上三种匹配方法,最常用的还是 findall() 方法,因为 match() 和 search() 均只能返回一个符合的结果。


三、使用 re 模块替换字符串

re 模块中的 sub() 方法用于实现字符串替换,语法格式如下:

re.sub(pattern, repl, string, count, flags)

参数说明

  • pattern:表示模式字符串,由要匹配的正则表达式转换而来。
  • repl:表示要替换的字符串。
  • string:表示要被查找替换的原始字符串。
  • count:可选参数,表示模式匹配后替换的最大次数,默认值为 0,表示替换所有的匹配。
  • flags:可选参数,表示标志位,用于控制匹配方式,如是否区分字母大小写、是否包括换行等等。

代码示例如下图所示:
在这里插入图片描述


四、使用 re 模块分割字符串

  re 模块中的 split() 方法用于实现根据正则表达式分割字符串,并以列表的形式返回。其作用同字符串对象的 split() 方法类似,所不同的就是分割字符由模式字符串指定。split() 方法的语法格式如下:

re.split(pattern, string, [maxsplit], [flags])

参数说明

  • pattern:表示模式字符串,由要匹配的正则表达式转换而来。
  • string:表示要匹配的字符串。
  • maxsplit:可选参数,表示最大的拆分次数。
  • flags:可选参数,表示标志位,用于控制匹配方式,如是否区分字母大小写、是否包括换行等等。

代码示例如下图所示:
在这里插入图片描述


总结

  博客中主要讲解了Python语言中 re 库的各种方法,在之后开发中最常用的就是匹配方法替换方法,其中匹配方法主要使用 findall()。其实这些用法不难,难的还是其中的模式字符串需要用到的正则表达式搭配,这些正则表达式中各种特殊字符的含义大家要牢记。如果这些还不明白的可以回头看看博主之前的博客【Python之正则表达式细讲】。

来源地址:https://blog.csdn.net/2201_75641637/article/details/129319151

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python之re库用法细讲

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python定时任务schedule库用法详细讲解

python中有一个轻量级的定时任务调度的库schedule,下面这篇文章主要给大家介绍了关于python定时任务schedule库用法的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
2023-01-11

Python中Numpy库的详细讲解

本篇内容介绍了“Python中Numpy库的详细讲解”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!首先得了解下什么是Numpy,从我的印象中
2023-06-04

python正则-re的用法详解

Python中的re模块是用来进行正则表达式操作的工具包。re模块提供了很多函数和方法,用于对字符串进行匹配、查找、替换等操作。1. re.match(pattern, string, flags=0)从字符串的起始位置开始匹配patter
2023-08-11

Python hashlib模块详细讲解使用方法

hashlib 是一个提供了一些流行的hash算法的 Python 标准库.其中所包括的算法有 md5, sha1, sha224, sha256, sha384, sha512. 另外,模块中所定义的 new(name, string=”) 方法可通过指定系统所支持的hash算法来构造相应的hash对象
2022-11-13

Python中re模块基本用法解析

基于Python的正则表达式, 使用re模块:1. match()方法, 从字符串头部开始匹配import recontent = 'The 123456 is my one phone number.'print(len(content)
2023-01-31

SpringCloud注册中心之consul详细讲解使用方法

Consul是一款由HashiCorp公司开源的,用于服务治理的软件,SpringCloudConsul对其进行了封装,这篇文章主要介绍了springcloud组件consul服务治理,需要的朋友可以参考下
2022-11-16

Vue mergeProps用法详细讲解

这篇文章主要介绍了Vue mergeProps用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
2022-11-13

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录