丘一丘正则表达式
正则表达式(regular expression,regex,RE)
- 正则表达式是一种用来简洁表达一组字符串的表达式
 - 正则表达式是一种通用的字符串表达框架
 - 正则表达式是一种针对字符串表达“简洁”和“特征”思想的工具
 - 正则表达式可以用来判断某字符串的特征归属
 
正则表达式常用操作符
| 操作符 | 说明 | 实例 | 
|---|---|---|
| . | 表示任意单个字符 | py. 可以匹配pyc,pyy,py!等等 | 
| [ ] | 字符集,对单个字符给出取值范围 | [abc]可以匹配a或b或c;[0-9a-zA-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次数(含n) | ab{1,2}c可以匹配abc、abbc | 
| ^ | 匹配字符串开头 | ^abc表示abc且在一个字符串的开头,^\d表示必须以数字开头 | 
| $ | 匹配字符串结尾 | abc表示abc且在一个字符串的结尾、\d$白哦是必须以数字结尾 | 
| ( ) | 分组标记,内部只能使用|操作符 | (abc|def)表示abc、def | 
| \d | 可以匹配一个数字,相当于[0-9] | \d{3}表示匹配3个数字,如010 | 
| \w | 可以匹配一个字母或者数字或者下划线,相当于[a-zA-Z0-9_] | \w\w\d可以匹配'py3' | 
| \s | 可以匹配一个空格(也包括Tab等空白字符) | \s+表示至少有一个空格,如' '、' ' | 
精确匹配
在正则表达式中,如果直接给出字符,就是精确匹配
- 'pyt' 匹配'pyt'
 - '00\d' 可以匹配'007'
 - '\w\d' 可以匹配'!5'
 - 'ye.' 可以匹配'yes'
 - '(P|p)python' 可以匹配'Python'、'python'
 
高阶精确匹配,经典实例
- ^[A-Za-z]+$ 匹配由26个英文字母组成的字符串,如'abrg'、'abgsfsfga'
 - [a-zA-Z\_][0-9a-zA-Z\_]* 可以匹配由字母或者下划线开头、后接任意一个由字母、数字或者下划线组成的字符串,也就是python的合法变量
 - ^-?\d+$ 匹配整数形式的字符串
 - ^[0-9][1-9][0-9]$ 匹配正整数形式的字符串
 - [1-9]\d{5} 中国境内邮政编码,6位
 - [\u4e00-\u9fa5] 匹配中文字符
 - \d{3}-\d{8}|\d{4}-\d{7} 国内电话号码,010-68913536
 
python正则表达式模块,(Re模块)
- re是python的标准库,主要用于字符串匹配
 - re库采用raw string类型(原生字符串类型)表示正则表达式,例如
r'[1-9]\d{5}',raw string是不包含对转义符再次转义的字符串 - re库也可以采用string类型表示正则表达,但是较为繁琐,例如
'[1-9]\\d{5}' 

re库功能函数
| 函数 | 说明 | 
|---|---|
| re.search() | 在一个字符串中搜索匹配正则表达式的第一个位置,返回match对象 | 
| re.match() | 从一个字符串的开始位置起匹配正则表达式,返回match对象 | 
| re.findall() | 搜索字符串,以列表类型返回全部能匹配的子串 | 
| re.split() | 将一个字符串按照正则表达式匹配结果进行分割,返回列表类型 | 
| re.finditer | 搜索字符串,返回一个匹配结果的迭代类型,每个迭代元素是match对象 | 
| re.sub() | 在字符串中替换所有匹配正则表达式的子串,返回替换后的字符串 | 
1. re.search(pattern,string,flags=0) 
在一个字符串中搜索匹配正则表达式的第一个位置,返回match对象
pattern:正则表达式的字符串或原生字符串表示string:待匹配字符串flags: 正则表达式使用时的控制标记

| 常用标记 | 说明 | 
|---|---|
| re.I re.IGNORECASE | 忽略正则表达式的大小写,[A-Z]能够匹配小写字符 | 
| re.M re.MULTILINE | 正则表达式中的^操作符能够将给定字符串的每行当做匹配开始 | 
| re.s re.DOTALL | 正则表达式中的.操作符能够匹配所有字符串,默认匹配除换行外的所有字符串 | 
2. re.match(pattern,string,flags=0) 
从一个字符串的开始位置起匹配正则表达式,返回match对象
pattern:正则表达式的字符串或者原生字符串表示string:待匹配字符串flags:正则表达式使用时的控制标记


3. re.findall(pattern,string,flags=0) 
搜索字符串,以列表类型返回全部能匹配的字符串 
4. re.split(pattern,string,maxsplit=0,flags=0) 
将一个字符串按照正则匹配结果进行分割,返回列表类型
maxsplt:最大分割数,剩余部分作为最后一个元素输出

5. re.finditer(pattern,string,flags=0) 
搜索字符串,返回一个匹配结果的迭代类型,每个迭代类型是match对象

6. re.sub(pattern,repl,string,cout=0,flags=0) 
在一个字符串中替换所有匹配正则表达式的子串,返回替换后的字符串
repl:替换匹配字符串的字符串cout:匹配的最大替换次数

re库的面向对象用法
在python中使用正则表达式的时候,re模块内部会做两件事:
编译正则表达式,如果正则表达式本身不合法,会报错
用编译后的正则表达式去匹配字符串
regex = re.compile(pattern,flags=0) 将正则表达式的字符串形式编译成正则表达式对象
pattern:正则表达式的字符串或原生字符串表示flags:正则表达式使用时的控制标记
 compile后生成了regular expression对象,由于该1对象包含了正则表达式,所以调用对应的方法不用给出正则字符串
re库的Match对象
- Match对象是一次匹配的结果,包含很多信息
 

Match对象的属性
| 属性 | 说明 | 
|---|---|
| .string | 待匹配的文本 | 
| .re | 匹配使用的pattern对象(正则表达式) | 
| .pos | 正则表达式搜索文本的开始位置 | 
| .endpos | 正则表达式搜索文本的结束位置 | 

Match对象的方法
| 方法 | 说明 | 
|---|---|
| .group(0) | 获得匹配后的字符串 | 
| .start() | 匹配字符串在原始字符串的开始位置 | 
| .end() | 匹配字符串在原始字符串的结束位置 | 
| .span() | 返回(.start(),.end())一个元组 | 


re库的贪婪匹配和最小匹配
re库默认使用贪婪匹配,即匹配最长的子串

最小匹配

** 最小匹配操作符 **
| 操作符 | 说明 | 
|---|---|
| *? | 前一个字符0次或者无限次扩展,最小匹配 | 
| +? | 前一个字符1次或者无限次扩展,最小匹配 | 
| ?? | 前一个字符0次或1次扩展,最小匹配 | 
| {m,n}? | 扩展前一个字符m至n次(包含n),最小匹配 | 
只要输出长度可能不同的,都可以通过在操作符后面加?变成最小匹配
https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143193331387014ccd1040c814dee8b2164bb4f064cff000
本文由博客群发一文多发等运营工具平台 OpenWrite 发布
相关文章:
丘一丘正则表达式
正则表达式(regular expression,regex,RE) 正则表达式是一种用来简洁表达一组字符串的表达式正则表达式是一种通用的字符串表达框架正则表达式是一种针对字符串表达“简洁”和“特征”思想的工具正则表达式可以用来判断某字符串的特征归属 正则表达式常用操作符 操作符说明实…...
工业物联网平台在水务环保、暖通制冷、电力能源等行业的应用
随着科技的不断发展,工业物联网平台作为连接物理世界与数字世界的桥梁,正逐渐成为推动各行业智能化转型的关键力量。在水务环保、暖通制冷、电力能源等行业,工业物联网平台的应用尤为广泛,对于提升运营效率、降低能耗、优化管理等…...
【研发日记】Matlab/Simulink技能解锁(二)——在Matlab Function编辑窗口Debug
文章目录 前言 行断点 条件断点 按行步进 Watch Value 分析和应用 总结 前言 见《【研发日记】Matlab/Simulink技能解锁(一)——在Simulink编辑窗口Debug》 行断点 当Matlab Function出现异常时,如果能确定大致的代码段,就可以在相应的行上设置一…...
从键盘输入两个数,求它们的和并输出 从键盘输入三个数到a,b,c中,按公式值输出
别急别急,先看完 (从初学者出发) 从键盘输入两个数,求它们的和并输出 作者 陈春晖 单位 浙江大学 本题目要求读入2个整数A和B,然后输出它们的和。 输入格式: 在一行中给出一个被加数 在另一行中给出一个加数 输出格式: 在…...
密码解密 C卷(100%用例)(JavaPythonC++Node.jsC语言)
给定一段“密文“字符串s,其中字符都是经过"密码本”映射的,现需要将"密文"解密并且输出 映射的规则(a-i)分别用(1-9)表示;(j-z")分别用(10-"26”)表示 约束:映射始终唯一 输入描述: “密文”字符串 输出描述: 明文字符串 补充说明: 翻译后的文本…...
因为manifest.json文件引起的 android-chrome-192x192.png 404 (Not Found)
H5项目打包之后,总是有这个报错,有时候还有别的icon也找不见 一通调查之后,发现是因为引入了一个vue插件 这个插件引入之后,webpack打包的时候就会自动在dist文件夹中产生一个manifest.json文件这个文件里面主要就是一些icon地址的…...
『 Linux 』进程替换( Process replacement ) 及 简单Shell的实现(万字)
文章目录 🦄 进程替换🦩 execl()函数🦩 execlp()函数🦩 execle()函数🦩 execv()函数🦩 execvp()函数🦩 execvpe()函数🦩 execve()函数 🦄 简单Shell命令行解释器的实现&a…...
【Linux】从零开始认识进程 — 前篇
我从来不相信什么懒洋洋的自由。我向往的自由是通过勤奋和努力实现的更广阔的人生。。——山本耀司 从零开始认识进程 1 认识冯诺依曼体系2 操作系统3 进程3.1 什么是进程???3.2 进程管理PCB 3.3 Linux中的进程深入理解 3.4 进程创建总结 送给…...
公众号留言功能恢复了,你的开通了吗?
了解公众号的人都知道,腾讯在2018年3月宣布暂停新注册公众号的留言功能,这之后注册的公众号都不具备留言功能。 这成了很多号主运营人的一块心病,也包括我。 没有留言,就好似一个人玩单机游戏,无法与读者互动ÿ…...
C语言葵花宝典之——文件操作
前言: 在之前的学习中,我们所写的C语言程序总是在运行结束之后,就会自动销毁,那如果我们想将一个结果进行长期存储应该如何操作呢?这时候就需要我们用文件来操作。 目录 1、什么是文件? 1.1 程序文件 1.2…...
SSM框架,MyBatis-Plus的学习(下)
条件构造器 使用MyBatis-Plus的条件构造器,可以构建灵活高效的查询条件,可以通过链式调用来组合多个条件。 条件构造器的继承结构 Wrapper : 条件构造抽象类,最顶端父类 AbstractWrapper : 用于查询条件封装…...
边缘计算网关的工作原理及其在工业领域的应用价值-天拓四方
随着物联网技术的快速发展,物联网时代已经悄然来临。在这个时代,数以亿计的设备相互连接,共享数据,共同构建智慧的世界。边缘计算网关通过将计算能力和数据存储推向网络的边缘,实现了对海量数据的实时处理,…...
下载指定版本的pytorch
下载网址:https://download.pytorch.org/whl/torch_stable.html 参考博客网址:https://blog.csdn.net/wusuoweiieq/article/details/132773977...
STL:List从0到1
🎉个人名片: 🐼作者简介:一名乐于分享在学习道路上收获的大二在校生 🙈个人主页🎉:GOTXX 🐼个人WeChat:ILXOXVJE 🐼本文由GOTXX原创,首发CSDN&…...
利用高分五号02星高光谱数据进行地物识别
高分五号02星搭载了一台60公里幅宽、330谱段、30米分辨率的可见短波红外高光谱相机(AHSI),可见近红外(400~1000nm)和短波红外光谱(1000~2500nm)分辨率分别达到5纳米和10纳米。单看参数性能优越&…...
前端如何识别上传的二维码---jsQR
npm npm i -d jsqrhtml <el-button click"$refs.input.click()">识别</el-button> <input type"file" style"display: none" id"input" input"upload">js import jsQR from "jsqr";decodeQR…...
flink1.18.0 自定义函数 接收row类型的参数
比如sql中某字段类型 array<row<f1 string,f2 string,f3 string,f4 bigint>> 现在需要编写 tableFunction 需要接受的参数如上 解决方案 用户定义函数|阿帕奇弗林克 --- User-defined Functions | Apache Flink...
JDK8和JDK11在Ubuntu18上切换(解决nvvp启动报错)
本文主要介绍JDK8和JDK11在Ubuntu18上切换,以供读者能够理解该技术的定义、原理、应用。 🎬个人简介:一个全栈工程师的升级之路! 📋个人专栏:计算机杂记 🎀CSDN主页 发狂的小花 🌄人…...
基于eleiment-plus的表格select控件
控件不是我写的,来源于scui,但在使用中遇到了一些问题,希望能把过程记录下来,同时把这个问题修复掉。 在使用的时候对控件进行二级封装,比如我的一个商品组件,再很多地方可以用到,于是 <template>&l…...
「❤️万文总结 时光回忆录❤️」那年,我在北京邮电大学计算机学院求学的日子
文章目录 关于我 | About Me梦绕西土城,邮情涌流 | Dreams and Connections in Haidian 北邮求学记 | My Days at BUPT岁月如歌,追忆往昔 | Reminiscing the Fleeting Years新篇章:班级与环境 | New Class, New Surroundings高压与挑战&#…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
React19源码系列之 事件插件系统
事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...
R 语言科研绘图第 55 期 --- 网络图-聚类
在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...
Python 实现 Web 静态服务器(HTTP 协议)
目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1)下载安装包2)配置环境变量3)安装镜像4)node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1)使用 http-server2)详解 …...
Bean 作用域有哪些?如何答出技术深度?
导语: Spring 面试绕不开 Bean 的作用域问题,这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开,结合典型面试题及实战场景,帮你厘清重点,打破模板式回答,…...
【LeetCode】算法详解#6 ---除自身以外数组的乘积
1.题目介绍 给定一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O…...
DBLP数据库是什么?
DBLP(Digital Bibliography & Library Project)Computer Science Bibliography是全球著名的计算机科学出版物的开放书目数据库。DBLP所收录的期刊和会议论文质量较高,数据库文献更新速度很快,很好地反映了国际计算机科学学术研…...
