python 学习之 re库的基本使用(正则匹配)上

目录

一、基本用法

二、函数介绍

1、match函数

2、search 函数

3、compile 函数

4、findall 和 finditer 函数

5、sub 函数和 subn 函数

6、split 函数


一、基本用法

首先我们需要引入 re 库

代码基本框架使用两行代码实现

测试代码:

import reret = re.match('.', 'test123')
print(ret.group())

代码详解:

使用 import 导入 re库;

ret 为自定义的一个变量 (这里称为匹配对象)用于接受返回的匹配信息;

Python中点是调用的意思,调用 re 库下的 match() 函数;

后面我们介绍的函数基本上都有三个参数,我们通常设置前两个就行了,便于大家理解。

match() 函数中第一个参数为正则表达式模式,即我们按照什么样的规则去进行正则匹配,第二个参数为要进行匹配的目标字符串,两者都需要使用引号包裹;

最后使用 print() 函数输出结果,其中 ret 为匹配对象,group() 是匹配对象的一个方法,调用该方法返回匹配到的字符串。

运行结果:

二、函数介绍

我们先讲最基础的用法,后面再介绍一些常用的匹配规则。

1、match函数

用法及参数上面已经介绍

对于 match() 函数,它只会匹配字符串的开头,如果目标字符串的开头匹配正则表达式,re.match() 返回一个匹配对象,否则返回 None(此时如果调用 group() 输出就会报错)。

具体如下图:

尝试在开头匹配字母 a ,由于字符串开头是 t ,因此匹配失败

2、search 函数

扫描整个字符串并返回第一个成功的匹配,如果没有匹配成功,则返回 None。

测试代码:

import reret = re.search('a', 'tesat123')
print(ret.group())

运行结果:

虽然在开头并未匹配到 a ,但是整个字符串中存在 a ,所以也会成功匹配 

3、compile 函数

该函数用于编译正则表达式,生成一个正则表达式(Pattern)对象,re.compile 返回一个正则表达式对象,对象具有 match、search、findall 等方法,用于提高匹配效率。

测试代码:

这里以 match 匹配成功为例

import rer = re.compile('t')
ret = r.match("test123")
print(ret)
print(ret.group())

运行结果: 

4、findall 和 finditer 函数

re.findall 用于在字符串中找到正则表达式所匹配的所有子串,并返回一个列表;re.finditer 与 re.findall 类似,但返回一个迭代器,我们使用 for 循环读出。

测试代码:

其中 '[\d]' 表示匹配任意一个数字,即 [0-9] 都会匹配成功。

更保险规范的写法是在  '[\d]' 前面加上一个小 r ,即 r '[\d]'

主要是因为我们用到了转义符,加上 r 的话,反斜杠就不会被当做转义符,而是单纯的反斜杠符号

import reret = re.findall('[\d]','asd123zxc456qwe789')
print(ret)
ret2 = re.finditer('[\d]', 'asd123zxc456qwe789')
print(ret2)
for i in ret2:print(i.group())

运行结果:

5、sub 函数和 subn 函数

re.sub 函数用于将匹配到的数据进行替换,re.subn 函数与 re.sub 类似,但返回一个元组,包括替换后的字符串和替换次数。

这个函数就一定需要指定三个参数了,分别对应:(正则匹配规则, 要替换的内容, 被替换的内容)

测试代码:

我们匹配数字,将数字都替换为 'AA'

import reret = re.sub('[\d]', 'AA', 'asd123zxc456qwe789')
print(ret)
ret2 = re.subn('[\d]', 'AA', 'asd123zxc456qwe789')
print(ret2)

运行结果:

在 sunb 函数中,这里替换了 9 个数字,因此返回元组的第二个参数为 9 。

6、split 函数

re.split 函数根据匹配进行切割字符串,并返回一个列表。

split 函数也是有三个参数:('正则匹配规则', '字符串', '分割次数')

分割次数如果不指定,则默认为 0 ,匹配到多少次分割多少次。

测试代码:

这里匹配空格(匹配到空格的地方我们就分割一次)

import re
ret = re.split(r" ", "myon 123 hacker 789 677 fun")
ret1 = re.split(r" ", "myon 123 hacker 789 677 fun", 3)
ret2 = re.split(r" ", "myon 123 hacker 789 677 fun", 4)
print(ret)
print(ret1)
print(ret2)

运行结果:

关于 re 库正则匹配的基本用法以及一些常用方法函数的介绍就是这些

下一篇博客我们将继续介绍 re 库正则匹配常用的匹配规则和一些常见操作

希望上述讲解对大家理解和学习Python有帮助!

期待大家的关注与支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/646975.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue 本地中导入 maptalks

1、进入 github 中 maptalks 文件下载页面(https://github.com/maptalks/maptalks.js/releases) 这里可能会有朋友应为网络问题打不开 github ,可以查看作者另一篇关于解决该问题的文章👉GitHub 打不开问题解决 2、将下载好的文件…

5V摄像机镜头驱动芯片GC6208,为什么可以替代AN41908,适用于摄像机镜头上

GC6208是一个镜头电机驱动IC摄像机和安全摄像机。该装置集成了一个由PID控制的可变光圈直流电机驱动器和两个通道的扫描隧道显微镜电机驱动器,用于变焦和聚焦控制。AN41908A是一款用于摄像机和安全摄像机的镜头马达驱动IC,具有lris控制功能。电压驱动系统…

深度学习核心技术与实践之深度学习研究篇

非书中全部内容,只是写了些自认为有收获的部分。 Batch Normalization 向前传播 (1)三个主要任务:计算出每批训练数据的统计量。 对数据进行标准化 对标…

.zip 文件和 .tar.gz文件 的区别

tgz和zip两种压缩格式,其实这两个压缩文件里面包含的内容是一样的,只是压缩格式不一样. tar.gz格式的文件比zip文件要小不少。tar.gz压缩格式用于unix的操作系统, 而zip用于windows的操作系统,但在windows系统中WinRar工具同样可以解压缩tar.gz格式的。 扩展: z…

仿真机器人-深度学习CV和激光雷达感知(项目2)day5【作业1与答案1】

文章目录 前言作业1答案1 前言 💫你好,我是辰chen,本文旨在准备考研复试或就业 💫本文内容是我为复试准备的第二个项目 💫欢迎大家的关注,我的博客主要关注于考研408以及AIoT的内容 🌟 预置知识…

在Rust中编写自定义Error

前言 之前我们聊过&#xff0c;Result<T, E> 类型可以方便地用于错误传导&#xff0c;Result<T, E>是模板类型&#xff0c;实例化后可以是各种类型&#xff0c;但 Rust 要求传导的 Result 中的 E 是相同类型的&#xff0c;或者能够自动转化为相同类型。比如&#…

【Jetbrains全家桶】PyCharm专业版学生用户申请(学信网)+Toolbox App安装配置教程(修改系统、配置和日志目录)

文章目录 一、Jetbrains学生用户免费使用1. [Jetbrains官网](https://www.jetbrains.com.cn/en-us/)新申请更新资料申请界面 2. [学信网](https://www.chsi.com.cn/xlcx/index.jsp)教育部学籍在线验证报告本人身份核验申请报告 二、安装Toolbox App[Toolbox App](https://www.j…

Qt 拖拽事件示例

一、引子 拖拽这个动作,在桌面应用程序中是非常实用和具有很友好的交互体验的。我们常见的譬如有,将文件拖拽到某个窗口打开,或者拖拽文件到指定位置上传;在绘图软件中,选中某个模板、并拖拽到画布上,画布上变回绘制该模板的图像… 诸如此类,数不胜数。 那么,在Qt中我…

Flink窗口类型功能汇总

Flink窗口类型功能汇总 Flink 中的 WindowAssigner 有多种实现类&#xff0c;每种实现类都有不同的作用。以下是一些常见的 WindowAssigner 实现类&#xff1a; TumblingEventTimeWindows&#xff1a; 将事件时间划分为固定大小的窗口。 SlidingEventTimeWindows&#xff1a; 将…

开源项目Git Commit规范与ChangeLog

一&#xff0c;conventional commit(约定式提交) Conventional Commits 是一种用于给提交信息增加人机可读含义的规范。它提供了一组用于创建清晰的提交历史的简单规则。 1.1 作用 自动化生成 CHANGELOG基于提交类型&#xff0c;自动决定语义化的版本变更向项目相关合作开发…

Redis面试题30

容器编排是什么&#xff1f;为什么容器编排工具在容器化应用中很重要&#xff1f;有哪些常见的容器编排工具&#xff1f; 答&#xff1a;容器编排是指管理和协调容器集群的过程&#xff0c;它涉及到自动化部署、伸缩、网络通信、服务发现等任务。容器编排工具可以帮助用户简化和…

shell脚本—循环语句

文章目录 循环语句循环含义1、for2、whilewhile循环 3、until4、双重循环及跳出循环 循环语句 echo命令&#xff1a;标准输出或提取shell变量的值 标准输出 [rootlocalhost ~]#echo 123456|passwd --stdin zhangsan 更改用户 zhangsan 的密码 。 passwd&#xff1a;所有的身…

《深度解析Docker命令:从入门到高级应用》

《深度解析Docker命令&#xff1a;从入门到高级应用》 1. 引言 Docker作为目前最热门的容器化技术之一&#xff0c;具有轻量、快速启动、隔离性好等优势&#xff0c;因此备受开发者喜爱。而熟练掌握Docker命令是使用这一技术的基础。本博客将详细介绍Docker中一些基础命令和高…

老兵(6)

和刚入职场的年轻人聊天&#xff0c;气氛总是可以非常欢快。 一晃眼这么多年过去了&#xff0c;好像变了很多&#xff0c;又好像什么都没变。一样的成长的烦恼&#xff0c;一样的意气轻狂&#xff0c;一样的洒满阳光的日子。 好消息是可能老铁要过来发展&#xff0c;期待&#…

SWMM模型INP解析

.INP文件解析 [OPTIONS]&#xff1a;SWMM软件运行前需要设置的参数 [RAINGAGES]雨水节点&#xff0c;核心设置雨水时间序列&#xff0c;可为INP内部数据也可为外部txt数据&#xff0c;TIMESERIES对应【TIMESERIES】模块&#xff0c;TS_1为时间序列名称 [TIMESERIES]&#xff0…

《开始使用PyQT》 第01章 PyQT入门 01 PyQT框架概述

01 PyQT框架概述 《开始使用PyQT》 第01章 PyQT入门 01 PyQT框架概述 The PyQt toolkit is a set of Python bindings for the Qt cross-platform widget toolkit and application framework. What does that mean? PyQt 工具包是 Qt 跨平台 widget 工具包和应用程序框架的…

部署幻兽帕鲁联机服务器需要怎样配置的云服务器?

随着互联网技术的快速发展&#xff0c;多人在线游戏逐渐成为人们休闲娱乐的重要方式。作为一款备受欢迎的游戏&#xff0c;幻兽帕鲁以其独特的玩法吸引了大量玩家。为了获得更好的游戏体验&#xff0c;许多玩家选择在云服务器上自行部署幻兽帕鲁联机服务器。本文将详细介绍部署…

设置模式之责任链模式

目录 1.概述 2.结构 3.实现 4.总结 1.概述 责任链模式&#xff08;Chain of Responsibility Pattern&#xff09;是一种行为性设计模式&#xff1b;它为请求创建了一个接收者对象的链&#xff0c;允许你将请求沿着处理者链进行发送。 收到请求后&#xff0c; 每个处理者均…

C++-gdb调试常用功能

文章目录 启动gdb运行程序设置断点运行控制查看源码查看信息查看变量线程相关 gdb调试常用功能如下&#xff0c;其中bin为要调试的程序&#xff0c;arg为参数 启动gdb 启动调试 gdb bin带参数启动 gdb --args bin arg1 arg2so预加载LD_PRELOAD/path/to/lib.so && gdb …

图像处理python基础

array 读取图片 tensor 模型预测 一般过程&#xff1a;读取数据np->tensor->model->result->np->画图 shape确保图像输入输出尺寸正确 读取图片 将在GPU上运行的tensor类型转变成在CPU上运行的np类型 三类计算机视觉任务的输入&#xff1a; 分类&#xff1…