丘一丘正则表达式
正则表达式(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高压与挑战&#…...
SAMD21 Turbo PWM:硬件级高精度同步PWM驱动详解
1. SAMD21 Turbo PWM 库深度解析:面向嵌入式工程师的高性能PWM驱动实践指南SAMD21 Turbo PWM 是一款专为基于 ATSAMD21G 微控制器(如 Arduino Nano 33 IoT、Adafruit Itsy Bitsy M0、Trinket M0 等)设计的底层硬件加速 PWM 库。它绕过 Arduin…...
OpenClaw社区贡献指南:为Qwen3-14b_int4_awq开发并分享自定义技能
OpenClaw社区贡献指南:为Qwen3-14b_int4_awq开发并分享自定义技能 1. 为什么我们需要更多社区技能 上周我尝试用OpenClaw自动整理电脑里堆积如山的PDF论文时,发现现有的文件处理技能无法识别某些特殊格式的学术文献。这个痛点让我意识到:Op…...
SecGPT-14B模型微调:提升OpenClaw安全任务执行准确率
SecGPT-14B模型微调:提升OpenClaw安全任务执行准确率 1. 为什么需要微调SecGPT-14B 去年我在使用OpenClaw自动化执行安全扫描任务时,经常遇到一个头疼的问题:当Agent尝试分析漏洞报告时,基础模型总是把"SSRF漏洞"和&q…...
Spring IoC 与 DI 核心详解 —— 基于 XML 配置:Bean 创建、依赖注入与生命周期全解析(Spring系列1)
在 Java 企业级开发中,Spring 框架凭借其强大的 IoC(控制反转) 与 DI(依赖注入) 能力,成为了事实上的标准。本文将带你从最原始的 XML 配置开始,逐步过渡到纯注解开发,并深入剖析 Io…...
OpenClaw压力测试:千问3.5-9B持续运行24小时稳定性
OpenClaw压力测试:千问3.5-9B持续运行24小时稳定性 1. 为什么需要压力测试? 上周我在本地部署了OpenClaw千问3.5-9B组合,想用它自动处理一些日常文档整理工作。最初几小时运行很顺畅,但第二天早上发现系统卡死了——这让我意识到…...
告别Qt中文乱码和C2001:一份完整的源码文件编码管理指南(从创建到编译)
Qt全流程编码管理实战:从源码创建到编译运行的终极解决方案 当你在Qt项目中第一次看到"C2001: 常量中有换行符"这个错误提示时,可能会感到困惑——明明代码看起来完全正常,为什么编译器就是不认账?更令人抓狂的是&#…...
终极指南:免费解锁Cursor Pro完整功能,告别AI编程限制
终极指南:免费解锁Cursor Pro完整功能,告别AI编程限制 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reach…...
5个专业级步骤:DriverStore Explorer驱动管理工具解决Windows系统稳定性难题
5个专业级步骤:DriverStore Explorer驱动管理工具解决Windows系统稳定性难题 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 问题剖析:为什么常规方法无法解决驱…...
插件冲突频发?三招让你的WPS回归清爽
插件冲突频发?三招让你的WPS回归清爽 【免费下载链接】WPS-Zotero An add-on for WPS Writer to integrate with Zotero. 项目地址: https://gitcode.com/gh_mirrors/wp/WPS-Zotero 当你在WPS中处理学术文档时,突然发现工具栏上出现了两个Zotero插…...
OpenClaw配置备份:Kimi-VL-A3B-Thinking模型参数迁移技巧
OpenClaw配置备份:Kimi-VL-A3B-Thinking模型参数迁移技巧 1. 为什么需要备份OpenClaw配置? 上周我的主力开发机突然硬盘故障,导致所有数据丢失。最让我痛心的不是代码——它们都有Git托管,而是花了两周精心调校的OpenClaw工作环…...
