python语言基础-5 进阶语法-5.4 正则表达式

声明:本内容非盈利性质,也不支持任何组织或个人将其用作盈利用途。本内容来源于参考书或网站,会尽量附上原文链接,并鼓励大家看原文。侵删。

5.4 正则表达式

5.4.1 正则表达式

正则表达式的概念:

  • 正则表达式是用来简洁表达一组字符串的表达式;
  • 正则表达式简洁地反映了一组字符串的特征。

正则表达式的使用:为了使用正则表达式,要进行编译。编译:将符合正则表达式语法的字符串转换成正则表达式特征。

正则表达式的语法:正则表达式语法由字符与操作符构成,如:P(Y|YT|YTH|YTHO)?N,其中()、|与?均为操作符。

正则表达式常用操作符:

  • .,表示任意单个字符;
  • [],字符集,对单个字符给出取值范围,如:[abc]表示要么取a要么取b要么取c,[a-z]表示a到z单个字符;
  • [],非字符集,对单个字符给出排除范围,如:[abc]表示非a或b或c的单个字符;
  • #,前一个字符的0次或无限次扩展,如abc表示ab、abc、abcc、abccc……;
  • +,前一个字符的1次或无限次扩展,如abc+表示abc、abcc、abccc……;
  • ?,前一个字符的0次或1次扩展,如abc?表示ab、abc;
  • |,两边表达式任意一个,如abc|def表示abc、def;
  • {m},扩展前一个字符m次,如ab{2}c表示abbc;
  • {m,n},扩展前一个字符m~n次,如ab{1,2}c表示abc、abbc;
  • ,匹配字符串开头,如:abc表示以abc为首的字符串;
  • , 匹配字符串结尾,如: a b c ,匹配字符串结尾,如:abc ,匹配字符串结尾,如:abc表示以abc为尾的字符串;
  • (),分组标记,内部只能使用|操作符,如(abc)表示abc,(abc|def)表示abc、def;
  • \d,数字,等价于[0-9];
  • \w,单词字符,等价于[A-Za-z0-9]。

正则表达式的语法在各个语言中是通用的。

5.4.2 re库

python中提供了re库来支持正则表达式的使用。re是python的标准库,无须导入。

re库常用的功能函数有:

  • re.search(),在一个字符串中搜索匹配正则表达式的第一个位置,返回match对象;(在字符串中搜索与正则表达式一样的地方)
  • re.Match(),从一个字符串的开始位置起匹配正则表达式,返回match对象;
  • re.findall(),搜索字符串,以列表类型返回全部能匹配的子串;
  • re.split(),将一个字符串按照正则表达式匹配结果进行分割,返回列表类型;
  • re.finditer(),搜索字符串,返回一个匹配结果的迭代类型,每个迭代元素是match对象;
  • re.sub(),在一个字符串中替换所有匹配正则表达式的子串,返回替换后的字符串。

正则表达式的类型是原生字符串类型raw。在使用正则表达式时,通常要使用原生字符串,这样做是为了避免使用普通字符串时需要处理转义字符的问题,而使正则表达式的语法变得臃肿。python中原生字符串的语法如下:

a = r'text';  # 在普通字符串前加r标识,即为原生字符串,原生字符串中的所有符号都是不发生转义的。

使用re库做正则匹配时,要注意两种匹配模式:

  • 贪婪匹配:当一个正则表达式与一个给定字符串存在多个匹配时,re库默认取最长匹配,这种匹配方式称为贪婪匹配。
  • 最小匹配:如果要取出的是最短的匹配结果,则称为最小匹配。使用最小匹配要加最小匹配操作符,常用的有:*?,前一个字符0次或无限次扩展,但获取最小匹配;+?,前一个字符1次或无限次扩展,但获取最小匹配;??,前一个字符0次或1次扩展,但获取最小匹配;{m,n}?,前一个字符m~n次扩展,但获取最小匹配。

更多关于re库的用法,可以在使用时详细查找资料。

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

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

相关文章

论文阅读——Performance Evaluation of Passive Tag to Tag Communications(一)

文章目录 摘要一、互耦对监听器标签输入阻抗的影响A. 无限细偶极子互阻抗的理论研究B. 电细偶极子的情况:理论与模拟C. 印刷偶极子的情况:电磁模拟与测量 二、T2T 通信系统的性能评估总结 论文来源:https://ieeexplore.ieee.org/document/970…

Palo Alto Networks PAN-OS身份认证绕过漏洞复现(CVE-2024-0012)

0x01 产品描述: PAN-OS 是运行 Palo Alto Networks 下一代防火墙的软件。通过利用 PAN-OS 本机内置的关键技术(App-ID、Content-ID、设备 ID 和用户 ID),可以在任何时间、任何地点完全了解和控制所有用户和设备中正在使用的应用程序。0x02 漏洞描述: PAN-OS 设备管理 Web …

使用ENSP实现静态路由

一、双路由器静态路由 1.项目拓扑 2.项目实现 (1)路由器AR1配置 进入系统试图 sys将路由器命名为R1 sysname R1进入g0/0/0接口 int g0/0/0将g0/0/0接口IP地址配置为1.1.1.1/24 ip address 1.1.1.1 24进入g0/0/1接口 int g0/0/1将g0/0/1接口IP地址配置为192.168.1.1/24 ip ad…

Claude3.5-Sonnet和GPT-4o怎么选(附使用链接)

随着人工智能模型的不断进化,传统的评估标准已经逐渐变得陈旧和不再适用。以经典的“喝水测试”为例,过去广泛应用于检测模型能力,但现如今即便是国内的一些先进模型,也能够轻松答对这些简单的问题。因此,我们亟需引入…

uniapp+vue3+ts H5端使用Quill富文本插件以及解决上传图片反显的问题

uniappvue3ts H5端使用Quill富文本插件以及解决上传图片反显的问题 1.在项目中安装Quill npm i quill1.3.72.需要显示富文本的页面完整代码 <template><view><div ref"quillEditor" style"height: 65vh"></div></view> &…

QML —— 3种等待指示控件(附源码)

效果如下 说明 BusyIndicator应用于指示在加载内容或UI被阻止等待资源可用时的活动。BusyIndicator类似于一个不确定的ProgressBar。两者都可以用来指示背景活动。主要区别在于视觉效果,ProgressBar还可以显示具体的进度(当可以确定时)。由于视觉差异,繁忙指示器和不确定的…

数字后端零基础入门系列 | Innovus零基础LAB学习Day11(Function ECO流程)

###LAB 20 Engineering Change Orders (ECO) 这个章节的学习目标是学习数字IC后端实现innovus中的一种做function eco的flow。对于初学者&#xff0c;如果前面的lab还没掌握好的&#xff0c;可以直接跳过这节内容。有时间的同学&#xff0c;可以熟悉掌握下这个flow。 数字后端…

R语言绘图过程中遇到图例的图块中出现字符“a“的解决方法

R语言绘图过程中遇到图例的图块中出现字符的解决方法 因为我遇到这个问题的时候没在网上找到合适的方法&#xff0c;找到个需要付费的&#xff0c;算了。也许是因为问的方式不同&#xff0c;问了半天AI也回答出来&#xff0c;莫名有些烦躁&#xff0c;打算对代码做个分析&…

云服务器部署WebSocket项目

WebSocket是一种在单个TCP连接上进行全双工通信的协议&#xff0c;其设计的目的是在Web浏览器和Web服务器之间进行实时通信&#xff08;实时Web&#xff09; WebSocket协议的优点包括&#xff1a; 1. 更高效的网络利用率&#xff1a;与HTTP相比&#xff0c;WebSocket的握手只…

数字反向输出

数字反向输出 C语言代码C 代码Java代码Python代码 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 小明听到广播里的数字后&#xff0c;总喜欢反着念给妈妈听。请聪明的你将小明听到的数字反向输出。 输入 输入为一个整型的四位数n 输出 …

2024-11-19 kron积

若A[a11 a12; a21 a22]; B[b11 b12; b21 b22]; 则C[a11*b11 a12*b11 a21*b11 a22*b11; a11*b12 a12*b12 a21*b12 a22*b12; a11*b21 a12*b21 a21*b21 a22*b21; a11*b22 a12*b22 a21*b22 a22*b22] 用MATLAB实现 方法1&#xff1a; A [a11 a12; a21 a22]; B [b11 b12; b21 b22]…

Java多态的优势和弊端

1. public class text {public static void main(String[] args) {animal dnew dog();d.eat();// dog a (dog) d;//类似强制转换//a.lookhome();/* if(d instanceof dog){dog a(dog)d;a.lookhome();}else if(d instanceof cat){cat c(cat) d;c.work();}else{System.out.print…

Chrome 浏览器 131 版本开发者工具(DevTools)更新内容

Chrome 浏览器 131 版本开发者工具&#xff08;DevTools&#xff09;更新内容 一、使用 Gemini 调试 CSS Chrome DevTools 现在推出了一个新的实验性 AI 辅助面板&#xff0c;可以与 Gemini 聊天并获得帮助来调试 CSS。 在 Elements 面板中&#xff0c;右键点击一个元素并选…

嵌入式工程师面试笔试总结——day1

第一章、进程与线程 1、什么是进程、线程&#xff0c;有什么区别&#xff1f; 进程是资源&#xff08; CPU 、内存等&#xff09;分配的基本单位&#xff0c;线程是 CPU 调度和分配的基本单位&#xff08;程序执行的最小单 位&#xff09;。同一时间&#xff0c;如果CPU 是单…

数据库表设计范式

华子目录 MYSQL库表设计&#xff1a;范式第一范式&#xff08;1NF&#xff09;第二范式&#xff08;2NF&#xff09;第三范式&#xff08;3NF&#xff09;三范式小结巴斯-科德范式&#xff08;BCNF&#xff09;第四范式&#xff08;4NF&#xff09;第五范式&#xff08;5NF&…

提成制是什么?如何高效管理提成制?

提成工资制即将企业盈利按照一定的比例在企业和员工之间分成的方式&#xff0c;这种方式具有一定的激励性。实行提成制首先要确定合适的提成指标&#xff0c;一般是按照业务量或销售额提成&#xff0c;即多卖多得。 对于提成制来说&#xff0c;确定合适的提成方式和比例是非常重…

VPN技术-IPSec VPN概述学习笔记

企业对网络安全性的需求日益提升&#xff0c;而传统的TCPЛIP协议缺乏有效的安全认证和保密机制。IPSec(Internet Protocol Security)作为一种开放标准的安全框架结构&#xff0c;可以用来保证IP数据报文在网络上传输的机密性、完整性和防重放。 IPsec VPN&#xff08;Interne…

基于干扰观测器的 PD 控制

基于干扰观测器的 PD 控制 1. 基本概念 干扰观测器&#xff08;Disturbance Observer, DOB&#xff09; 是一种用于估计系统中未建模动态或外部干扰的工具&#xff0c;通过补偿干扰&#xff0c;提高系统控制性能。结合 PD 控制器&#xff0c;干扰观测器能够实时补偿外部扰动和…

[371]基于springboot的高校实习管理系统

摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统高校实习管理系统信息管理难度大&#xff0c;容错率低&am…

基于无线传感器网络的无线温湿度采集系统(附详细使用教程+完整代码+原理图+完整课设报告)

&#x1f38a;项目专栏&#xff1a;【Zigbee课程设计系列文章】&#xff08;附详细使用教程完整代码原理图完整课设报告&#xff09; 前言 &#x1f451;由于无线传感器网络&#xff08;也即是Zigbee&#xff09;作为&#x1f310;物联网工程的一门必修专业课&#xff0c;具有…