Python(20)正则表达式(Regular Expression)中常用函数用法

大家好!我是码银🥰

欢迎关注🥰:

CSDN:码银

公众号:码银学编程

正文 

正则表达式

粗略的定义:正则表达式是一个特殊的字符序列,帮助用户非常便捷的检查一个字符串是否符合某种模式。例如:平时我们的登陆密码,必须是字母和数字的组合,就可以使用正则表达式。

正则表达式的特点:灵活性、逻辑性和功能性非常强,可以迅速地用极简单的方式达到字符串的复杂控制。然而,对于刚接触的人来说,可能会觉得比较晦涩难懂。

Python有关正则表达式的方法是在re模块内,所以使用正则表达式需要导入re模块。

import re

本篇文章先介绍一下re模块中的几个函数:

函数功能
re.match()用于从字符串的开始位置进行匹配,如果起始位置匹配
成功,结果为Match对象,否则结果为None。
re.search()用于在整个字符串中搜索第一个匹配的值,如果匹配成
功,结果为Match对象,否则结果为None。
re.findall()用于在整个字符串搜索所有符合正则表达式的值,结果
是一个列表类型。
re.sub ()用于实现对字符串中指定子串的替换
re.split()字符串中aplit(方法功能相同,都是分隔字符串

re.match()

这个方法和re.search()方法类似,但是也有点小差别的:

  • re.match从字符串的开头开始匹配(也就是说待匹配字符在中间是匹配不到的),如果找到匹配项,则返回一个匹配对象;如果没有找到匹配项,则返回None。
  • re.search在整个字符串中搜索匹配项,如果找到匹配项,则返回一个匹配对象;如果没有找到匹配项,则返回None。
import re  # 定义一个字符串变量msg,包含一段描述  
msg = 'During my two years living in London, I found that the British people really enjoy eating and drinking outdoors.'  # 定义一个字符串变量pattern,包含我们要在msg中搜索的文本模式  
pattern = 'During'  # 使用re.match函数搜索msg中与pattern匹配的文本。如果找到匹配项,则返回一个匹配对象;否则返回None  
txt = re.match(pattern,msg)  # 检查是否找到了匹配项  
if txt!=None :  # 如果找到了匹配项,则打印匹配的文本  print("测试1输出: ", txt.group())  
else:  # 如果没有找到匹配项,则打印“测试1搜寻失败”  print("测试1搜寻失败")  # 定义另一个字符串变量pattern2,包含我们要在msg中搜索的另一个文本模式  
pattern2='my'  txt = re .match(pattern2, msg)  if txt!=None:  print("测试2输出:",txt.group())  
else:   print("测试2搜寻失败")

re.search()

由于re.search()方发是全文搜索,所以文章中只要出现对应字符串(开头、中间位置都无所谓,这是与re.match最大的区别),就会返回正确结果。 

import remsg = 'During my two years living in London, I found that the British people really enjoy eating and drinking outdoors.'  
pattern = 'During'
txt = re.search(pattern, msg)if txt != None:print("测试1输出: ", txt.group())
else: print("测试1搜寻失败")  pattern2 = 'my'
txt = re.search(pattern2, msg)if txt != None:print("测试2输出:", txt.group())
else:print("测试2搜寻失败")
输出结果:
测试1输出:  During
测试2输出: my

re.findall()

re.findall(pattern, string, flags=0),用于在整个字符串搜索所有符合正则表达式的值,结果
是一个列表类型

  • pattern:正则表达式模式,用于匹配字符串。
  • string:要搜索的字符串。
  • flags:可选参数,指定正则表达式的匹配选项,如多行匹配、忽略大小写等。
import re# 定义一个正则表达式模式,匹配所有的数字
pattern = r'\d+'# 要搜索的字符串
string = 'abc123 def456 ghi789'# 使用 re.findall() 查找所有匹配项
matches = re.findall(pattern, string)print(matches)  

其中\d是“元字符”,具有特殊意义的专用字符,在另外一章文章中在做解释吧。 

在上面的示例中,我们定义了一个正则表达式模式 \d+,用于匹配一个或多个数字。然后,我们使用 re.findall() 函数在字符串 abc123 def456 ghi789 中查找所有匹配项。最后,我们将结果打印出来,可以看到成功匹配到了所有的数字。

re.sub ()

re.sub(pattern, repl, string, count=0, flags=0),用于在字符串中使用正则表达式进行查找和替换 

  • pattern:正则表达式模式,用于匹配字符串。
  • repl:替换模式,表示找到匹配项后要替换成的字符串。
  • string:要搜索的字符串。
  • count:可选参数,指定替换操作的次数,默认为 0 表示替换所有匹配项。
  • flags:可选参数,指定正则表达式的匹配选项,如多行匹配、忽略大小写等。
import re
msg = 'During my two years living in London'
pattern1 = 'years'
#欲搜寻字符串
newstr = 'days'
#新字符串
txt = re.sub(pattern1 ,newstr ,msg)
#如果找到则取代
if txt != msg:print("取代成功:", txt)
else:print("取代失败:",txt)pattern2 = 'Eli Thomson'
#欲搜寻字符串
txt = re.sub(pattern2,newstr,msg)
#如果找到则取代
if txt!= msg:print("取代成功:",txt)
else:print("取代失败: " ,txt)
D:\anaconda2019\python.exe D:/pyprogect/正则表达式/test1.py
取代成功: During my two days living in London
取代失败:  During my two years living in London

re.split()

 re.split(pattern, string, maxsplit=0, flags=0),用于根据正则表达式模式将字符串分割成多个子字符串,并返回一个包含所有子字符串的列表。

  • pattern:正则表达式模式,用于指定分割规则。
  • string:要分割的字符串。
  • maxsplit:可选参数,指定最大分割次数,默认为 0 表示不限制分割次数。
  • sflags:可选参数,指定正则表达式的匹配选项,如多行匹配、忽略大小写等。
import res='https://www.baidu.com/s?wd=CSDN&ie=utf-8&tn=54093922_14_hao_pg'
pattern='[?|&]'
txt=re.split(pattern,s)
print(txt)pattern = ','
string = 'apple,banana,orange'
split_strings = re.split(pattern, string)
print(split_strings)  # 输出: ['apple', 'banana', 'orange']

 输出结果:

D:\anaconda2019\python.exe D:/pyprogect/正则表达式/test2.py
['https://www.baidu.com/s', 'wd=CSDN', 'ie=utf-8', 'tn=54093922_14_hao_pg']
['apple', 'banana', 'orange']Process finished with exit code 0

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

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

相关文章

5.electron之主进程起一个本地服务

如果可以实现记得点赞分享,谢谢老铁~ Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 Electron 将 Chromium 和 Node.js 嵌入到了一个二进制文件中,因此它允许你仅需一个代码仓库,就可以撰写支持 Windows、…

Python_百度贴吧评论情感分析

一、评论爬取 以百度贴吧中“美团骑手吧”为例,对页面中的帖子评论进行爬取,并将结果以json的格式保存到本地中。 from lxml import etree import requests import json# 根据网页url获取评论 def GetComments(url):# 使用requests库发送GET请求&#…

背包dp第六讲:混合背包板子及例题

特征 混合背包,就是把01,完全,多重背包混合起来 物品一共有三类: 第一类物品只能用1次(01背包); 第二类物品可以用无限次(完全背包); 第三类物品最多只能用…

Multisim14.0仿真(五十五)汽车转向灯设计

一、功能描述: 左转向:左侧指示灯循环依次闪亮; 右转向:右侧指示灯循环依次闪亮; 刹车: 所有灯常亮; 正常: 所有灯熄灭。 二、主要芯片: 74LS161D 74LS04D 74…

获取对象边及边对应的顶点索引

开发环境&#xff1a; Windows 11 家庭中文版Microsoft Visual Studio Community 2019VTK-9.3.0.rc0vtk-example demo解决问题&#xff1a;获取对象边及边对应的顶点索引 prj name: CellEdges #include <vtkIdList.h> #include <vtkNew.h> #include <vtkPoint…

谁是嫌疑犯问题

问题描述&#xff1a; 有6名犯罪嫌疑人A、B、C、D、E、F&#xff0c;已知如下事实&#xff1a; A、B至少有1人作案&#xff1b; A、E、F三人中至少有2人参与作案&#xff1b; A、D不可能是同案犯&#xff1b; B、C或同时作案&#xff0c;或与本案无关&#xff1b; C、D中…

爱情终结,旅程重启:独自征服拉萨与四姑娘山

爱情&#xff0c;是人生中一段充满激情和期待的旅程&#xff0c;然而有时它也会成为人生中一场无法避免的终结。当爱情逝去&#xff0c;留下的是一片空虚和失落&#xff0c;但或许正是在这片失落中&#xff0c;我找到了重新定义自我的机会。独自踏上旅途&#xff0c;成为了越来…

Kubernetes CNI Calico:Route Reflector 模式(RR) calico IPIP切换RR网络模式

1. 概述 Calico 路由反射模式是一种 BGP 互联方案,用于解决大规模网络中路由信息的分发和同步问题。在 Calico 的路由反射模式中,路由反射器(Route Reflectors)被用来集中管理路由信息,以减少网络中的路由信息数量和减小路由信息的分发规模。 在 Calico 的路由反射模式中…

[office] Excel如何快速统一数字编号长度 #经验分享#其他

Excel如何快速统一数字编号长度 我们在办公室使用Excel统计数据的时候&#xff0c;经常会遇到第一列数据全部是数字编号&#xff0c;但是因为数字的位数不一样&#xff0c;长短不一的样子看起来不是很协调。那么如何快速统一数字编号长度呢&#xff1f;一起来了解一下吧 我们在…

mac电脑快捷指令实现拼图

mac访达&#xff0c;搜索输入‘快捷指令’&#xff0c;找到‘快捷指令’&#xff0c; 点击快捷指令&#xff0c;进入快捷指令中心&#xff0c;搜索‘拼图’ &#xff0c;选中‘照片拼图’&#xff0c; 点击‘添加快捷指令’&#xff0c; 在‘所有快捷键指令’中可以看到添加的快…

五大架构风格之三:独立构件风格

独立构件风格介绍&#xff1a; 独立构件风格&#xff08;模块化、组件化、分布式组件&#xff09;是一种软件架构风格&#xff0c;其中系统被划分为一组相互协作但逻辑上独立的构件。每个构件在设计时都具有清晰的接口和职责&#xff0c;可以在运行时独立部署、升级而不影响整个…

【chromium】windows构建base库 3:gn + vs2022 args 设置及debug x86 构建

GN 构建配置GN 构建配置 此页面提供了 GN 构建的一些常见构建设置。它假设您已经获得了 Chromium checkout。 也可以看看 从命令行运行“gn help”。 所有 GN 文档 GN 快速入门指南 GN 参考 (一个网页中“gn help”中所有内容的转储)。 了解 GN 构建标志 回想一下,在 GN …

tomcat部署zrlog

1.下载zrlog包&#xff0c;并添加到虚拟机中 1)进入/opt/apache-tomcat-8.5.90/webapps目录 cd /opt/apache-tomcat-8.5.90/webapps2)下载zrlog包 wget http://dl.zrlog.com/release/zrlog-1.7.1-baaecb9-release.war 3)重命名包 mv zrlog-1.7.1-baaecb9-release zrblog 2…

【Linux】环境基础开发工具的使用之gdb详解(三)

前言&#xff1a;上一篇文章中我们讲解了Linux下的gcc与g的使用&#xff0c;今天我们将进一步的学习gdb与makefile来帮我们更好的理解与使用基础开发工具。 &#x1f496; 博主CSDN主页:卫卫卫的个人主页 &#x1f49e; &#x1f449; 专栏分类:Linux的深度刨析 &#x1f448; …

R语言入门笔记2.2

ifelse语句 结构&#xff1a;ifelse(条件,表达式1,表达式2) #满足条件&#xff0c;则进入表达式1&#xff0c;否则为表达式2 例1&#xff1a; > a1 > ifelse(a<0,"a小于0",ifelse(a0,0,"a大于0")) [1] "a大于0"a1 - 这行代码给变量a…

从零开始手写mmo游戏从框架到爆炸(六)— 消息处理工厂

就好像门牌号一样&#xff0c;我们需要把消息路由到对应的楼栋和楼层&#xff0c;总不能像菜鸟一样让大家都来自己找数据吧。 首先这里我们参考了rabbitmq中的topic与tag模型&#xff0c;topic对应类&#xff0c;tag对应方法。 新增一个模块&#xff0c;专门记录路由eternity-…

【类与对象(中)】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言 1.类的6个默认成员函数 2. 构造函数 2.1 概念 2.2 特性 3.析构函数 3.1 概念 3.2 特性 4. 拷贝构造函数 4.1 概念 4.2 特征 引用 常引用 5.赋值运算符重载 5.1…

几个MySQL系统调优工具

几个MySQL系统调优工具 可以使用下面几个工具来做基准测试&#xff1a; sysbench&#xff1a;一个模块化&#xff0c;跨平台以及多线程的性能测试工具。 https://github.com/akopytov/sysbench iibench-mysql&#xff1a;基于Java的MySQL / Percona / MariaDB 索引进行插入性能…

C语言之找单身狗

个人主页&#xff08;找往期文章包括但不限于本期文章中不懂的知识点&#xff09;&#xff1a; 我要学编程(ಥ_ಥ)-CSDN博客 题目&#xff1a; 在一个整型数组中&#xff0c;只有一个数字出现一次&#xff0c;其他数组都是成对出现的&#xff0c;请找出那个只出现一次的数字。…

【zip密码】解除ZIP压缩文件的密码保护的4种方法

Zip压缩包加密大家都很熟悉了&#xff0c;那么zip压缩包取消密码&#xff0c;大家了解多少呢&#xff1f;有密码的情况下&#xff0c;有哪些方法可以取消密码&#xff1f;无密码又该如何取消密码&#xff1f;今天将方法总结分享给大家。 最原始的方法&#xff0c;就是通过解压…