python中re模块的match、search、findall、sub方法使用

article/2025/10/14 4:58:50

正则表达式

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。(来自百度)

正则表达式语法

(图片资料转自https://www.cnblogs.com/chengege/p/11190782.html)
在这里插入图片描述

re模块

re模块是python中内置的,支持正则匹配的模块。

match方法

match方法的语法为:re.match(pattern,string,[flags=0])
pattern表示要匹配的字符串,string表示原始字符串。flags为标志位,控制正则匹配格式,如忽略大小写。默认值是0,代表无特殊匹配。
需要注意的是,match方法在匹配时,是从头开始匹配的,如果是从中间截取一段字符,进行匹配,是匹配不到的。
下面一段代码:

# 原始字符串
old_str = '{"phone_num":"${not_exist_num}","pwd":"123456"}'# 要匹配的字符串中${not_exist_num}
replace_str = '${not_exist_num}'
# 要匹配的字符串 {"phone_num":
replace_str1 = '{"phone_num":'# 使用match方法进行分别匹配两个字符
res = re.match(replace_str, old_str)
res1 = re.match(replace_str1, old_str)

进行调试,可发现,匹配replace_str时,返回的是None, 匹配replace_str1时,返回的是Match对象。
在这里插入图片描述
可以通过match对象的group方法,获取匹配结果:
在这里插入图片描述

由上面测试结果可知,match的方法的特点:

  • match方法是从头开始匹配的,从中间截取字符串,是无法匹配到的。这也是match方法的局限性。
  • match方法匹配不到结果时,返回的是None,匹配到结果时,返回的是match对象。
  • match方法匹配到结果时,使用match对象的group方法,获取匹配结果。

search方法

search方法的语法为:re.search(pattern,string,[flags=0])
pattern 表示要匹配的正则表达式, string 表示要匹配的字符串, flags为标志位,用于控制正则表达式的匹配方式,如是否区分大小写,多行匹配等等,默认为0,代表无特殊匹配。
search方法与match方法有些类似。search是在整个原始字符串查找匹配,匹配到第一个之后,就不会再继续了。
举例:

import re# 原始字符串
old_str = '{"phone_num1":"${not_exist_num}", "phone_num2":"${not_exist_num}", "pwd":"123456"}'# 要查找字符串中的${not_exist_num},原始字符串中有两处, 因为字符串中有特殊字符,所以需要r转义,$在正则中有特殊含义,所以还需要使用\进行转义
replace_str = r'\${not_exist_num}'
replace_str1 = '1111'# 使用search方法
res = re.search(replace_str, old_str)
res1 = re.search(replace_str1, old_str)# 使用group()获取匹配结果
s = res.group()

匹配上则返回match对象,使用group方法获取匹配字符串,匹配不到返回None。(这一点与match一样)
在这里插入图片描述
由上面测试结果可知,search的方法的特点:

  • search方法是全字符串匹配的,匹配到第一个结果,即返回结果,不再继续。
  • search方法匹配不到结果时,返回的是None,匹配到结果时,返回的是match对象。
  • search方法匹配到结果时,使用match对象的group方法,获取匹配结果。

findall方法

findall方法的语法是:re.findall(pattern, string, flags=0)
pattern 表示要匹配的正则表达式, string 表示要匹配的字符串, flags为标志位,用于控制正则表达式的匹配方式,如是否区分大小写,多行匹配等等,默认为0,代表无特殊匹配。

findall是查找字符串中所有可匹配的,并将匹配结果以列表的形式返回。如果匹配不到,则返回一个空列表。

import re# 原始字符串
old_str = '{"phone_num1":"${not_exist_num}", "phone_num2":"${not_exist_num}", "pwd":"123456"}'# 要查找字符串中的${not_exist_num},原始字符串中有两处, 因为字符串中有特殊字符,所以需要r转义,$在正则中有特殊含义,所以还需要使用\进行转义
replace_str = r'\${not_exist_num}'
replace_str1 = '1111'# 使用findall方法
res = re.findall(replace_str, old_str)
res1 = re.findall(replace_str1, old_str)

在这里插入图片描述

sub方法

sub方法的格式为:re.sub(pattern, repl, string[, count])
pattern为匹配字符,可以是一串字符,也可以是正则表达式,repl要替换的字符串, string为原始字符串, count为替换次数,默认为0。
sub方法使用repl替换string中每一个匹配的子串后返回替换后的字符串。

比如下面一段代码,使用sub实现替换:

import re# 原始字符串
old_str = '{"phone_num1":"${not_exist_num}", "phone_num2":"${not_exist_num}", "pwd":"123456"}'# 要查找字符串中的${not_exist_num},原始字符串中有两处, 因为字符串中有特殊字符,所以需要r转义,$在正则中有特殊含义,所以还需要使用\进行转义
replace_str = r'\${not_exist_num}'
replace_str1 = '111'# 使用sub方法
resu = re.sub(replace_str, "138098776754", old_str)  # count 默认为0
res = re.sub(replace_str, "13544567865", old_str, count=1)
res1 = re.sub(replace_str, "13489778966", old_str, count=2)
res2 = re.sub(replace_str1, '222', old_str)

通过调试可知:

  • count默认为0时,会默认替换全部,指定count值时,则按照指定次数替换。
  • 可匹配到时,则返回匹配到的字符串。
  • 无法匹配到时,则返回原始的字符串。
    0
    上面这段代码,是直接替换的字符串,还可以通过正则表达式进行替换:
import re# 原始字符串
old_str = 'a123b'# 要替换字符串中的数字,在正则表达式中,\d代表0-9 , 使用r进行转义
replace_str = r'\d'# 使用sub方法
res = re.sub(replace_str, "o", old_str)pass

上面代码进行调试后,原始字符串中的123,均被替换为o:
在这里插入图片描述


http://chatgpt.dhexx.cn/article/GwMBAUCO.shtml

相关文章

Python中正则表达式findall用法

一:前言 在写着自动化测试的脚本时,重新复习了一下正则表达式findall()方法。为了深化印象,输出点东西,就来写个通过正则表达式爬取菜鸟教程标题的小案例。 参考教程:菜鸟教程之Python正则表达式 二:操作…

python爬虫beautifulsoup findall函数详解

测试网站&#xff1a; http://www.pythonscraping.com/pages/warandpeace.html 内容初探 有一些奇怪的红绿分类 网页源码介入&#xff1a; 我们所要做的就是识别<>中的信息&#xff0c;然后提取它后面的内容 基础网络连接代码&#xff1a; html urlopen("h…

正则表达式入门-findall()函数

正则表达式入门-findall()函数 findall()函数 例子 import re a 123abc rere.findall(\d\d\d,a) print(re)导入用于完成正则表达式操作的re库 使用re库中的findall()函数提取文本 \d表示匹配1个数字&#xff0c;那么\d\d\d就表示匹配连续的3个数字 语法为 re.findall(匹…

38 匹配字符串——findall()方法

文章目录 语法案例 语法 findall()方法用于在整个字符串中搜索所有符合正则表达式的字符串&#xff0c;并以列表的形式返回。如果匹配成功&#xff0c;则返回包含匹配结构的列表&#xff0c;否则返回空列表。findall()方法的语法格式如下&#xff1a; re.findall(pattern, st…

Qt QLabel样式表总结

先来个例子 QLabel {font-family: "Microsoft YaHei";font-size: 14px;color: #BDC8E2;background-color: #2E3648; }效果 上面的例子是基本的样式设置&#xff0c;下面我们将探讨 QLable 各种样式设置&#xff1a; 字体样式 font-family: "Microsoft YaHe…

QT QLabel中字体行间距怎么设置?

方式一&#xff1a;<br>可以达到换行的效果&#xff0c;但是行间距太小了&#xff0c;两个<br>又太大了&#xff0c;这种方法并不可控。 m_titleLabel->setText("<font style font-size:19px; color:#ffff00;font-weight:bold> 客户端界面 </font…

重写QLabel实现图片显示框选截取保存

之前写过用重写QGraphicsItem的方式来实现图片显示&#xff0c;框选&#xff0c;保存的代码&#xff0c;这次通过重写QLabel的方式来实现。 主要重写QLabel的代码如下&#xff1a; mylabel.h #ifndef MYLABEL_H #define MYLABEL_H#include <QObject> #include <QWidg…

QLabel 标签

QLabel 标签 QLabel 是 PyQt6 里用来建立文字或图片的标签控件&#xff0c;这篇教学会介绍如何在 PyQt6 窗口里加入 QLabel 标签&#xff0c;并进行像是文字字型、大小、颜色和位置...等参数设定。 快速预览&#xff1a; 加入 QLabel 标签 QLabel 位置设定 QLabel 文字设定 …

QLabel的使用

QLabel介绍 QLabel 是 Qt 框架中的一个控件类&#xff0c;用于显示文本或图像。它可以在窗口或其他容器中显示静态文本&#xff0c;并且可以根据需要设置格式、对齐方式和尺寸。 主要作用如下&#xff1a; 显示文本内容&#xff1a;QLabel 可以显示文字内容&#xff0c;可以…

QLabel显示图像

QLabel显示图像 通常用QLabel显示图像&#xff0c;QLabel类有setPixmap()函数&#xff0c;可以用来显示图像。也可以直接用QPainter画出图像。 如果图像过大&#xff0c;直接用QLabel显示&#xff0c;将会出现有部分图像显示不出来&#xff0c;这时可以用Scroll Area部件。方…

QLabel绘制滚动文本

实现思路 绘制滚动文本是个很简单的事&#xff0c;只需要用定时器累计一个文本坐标偏移量&#xff0c;然后 update &#xff0c;在 paintEvent 里把文本画出来。 Qt 定时刷新可以用&#xff08;可能还有其他方式&#xff09;&#xff1a; QObject的startTimer配合paintEvent&…

PyQt5 QLabel控件

PyQt5 QLabel控件 QLabel常用方法显示动画超链接 QLabel常用信号 QLabel 就是常见的标签&#xff0c;可以用来显示文字&#xff08;包括纯文本和富文本)&#xff0c;图片及动画。 QLabel常用方法 方法描述margin保存 QLabel 控件中内容与边框之间的距离&#xff08;边距&#…

Qt QLabel详解

一、QLabel常用方法 1. QLabel设置文本内容 ui.label->setText(QStringLiteral("测试中文\n"));2. QLabel设置颜色 通过设计器里面的改变样式进行设置&#xff1a;同时可以设置字体、文本对齐方式、背景图片 color: rgb(255, 85, 0); background-color: rgb(8…

Qt之QLabel(属性 显示图片 显示动图 显示富文本信息 信号)

QLabel可以说是Qt中最常见的控件之一&#xff0c;主要用来显示文本文字、显示图片、显示gif动图、显示富文本信息。本文将从以下几个方面对QLabel进行介绍: [1]显示及获取文本文字 [2]显示图片 [3]显示动图 [4]显示富文本信息 [5]常用属性设置 [6]信号事件 至于样式表(Q…

Qt扫盲-QLabel使用总结

QLabel使用总结 一、QLabel 显示内容二、注意事项1. 格式注意2. 不保留先前状态3. 格式对齐4. 伙伴焦点 三、信号和槽函数使用1. 信号2. 槽函数 总结&#xff1a; QLabel 其实就是一个用来只读显示的简易控件。适合数据量很小的内容显示。 QLabel用于显示 文本或图像。 不提供…

QT常用控件——QLabel标签控件

操作系统: 统信UOSv20 Qt版本: 5.11.3 一&#xff0c;简单介绍 QLabel用于显示文本或图像&#xff0c;不提供用户交互功能&#xff0c;标签的视觉外观可以以各种方式配置。 项目内容HeaderQLabelqmakeQT widgetsInheritsQFrame 二&#xff0c;常用方法 1. 常用方法 方法…

JavaScript 弹出对话框3种方式

js 弹出对话框3种方式对话框有三种 1&#xff1a;只是提醒&#xff0c;不能对脚本产生任何改变&#xff1b; 2&#xff1a;一般用于确认&#xff0c;返回 true 或者 false &#xff0c;所以可以轻松用于 if...else...判断 3&#xff1a;一个带输入的对话框&#xff0c;可以返回…

js的弹出框

js的弹出框包括三种&#xff1a;alert、confirm、prompt 1 alert() alert()方法有一个参数&#xff0c;就是用户想弹出的内容&#xff0c;弹出框很简单&#xff0c;就一个显示功能&#xff0c;你可以点击确认关闭这个弹出框。 例如&#xff1a; alert("hello world&…

JavaScript弹出对话框的三种方法

三种方法 alert(); 最简单&#xff0c;将alert();括号内的内容弹出。 confirm(); 与alert();类似&#xff0c;包含确认和取消按钮&#xff0c;点击确定confirm();方法会返回true&#xff0c;点击取消confirm();方法会返回false&#xff1b; prompt(); 与confirm();方法…

JavaScript弹出框

提到弹出框&#xff0c;首先想到的alert()了&#xff0c;其次想到的也还是alert&#xff08;&#xff09;&#xff0c;其实在js中有三种弹出框&#xff0c;下面我们一一说明。 1&#xff0c;仅确定。 即&#xff1a;对话框界面上只有确定按钮。该功能可以使用alert&#xff08;…