Python正则表达式(python系列29)

前言:在实际开发中,正则表达式主要用在模式匹配(检查一个字符是否符合某种格式)和处理复杂的文本数据,例如查找,替换,分割。

定义:使用元字符(具有特殊意义的专用字符)组成的规则,提取,替换,验证指定的字符串。

在线测试:正则表达式测试

 虽然正则表达式学一次忘一次,但是还是得学,学完忘了至少还有个影响,就算你到时候要用记不起来,问ai或者去百度的时候不会那么陌生。

我们来一起敲一敲吧:

import re# 匹配字符 每个普通字符匹配其对应的字符
print(re.findall('123', '1234512398123'))# 匹配两侧任意的正则表达式
print(re.findall('12|45', '1234512398123'))
# 匹配除换行外的任意一个字符
print(re.findall('张.丰', "张三丰,张四丰,张五丰"))
# 匹配字符集中的任意字符
print(re.findall('[aeiou]', "How are you?"))
# 匹配除了字符集中的任意字符
print(re.findall(r'\S', "Use 007 port"))
# \w 普通字符, \W 非普通字符
# 普通字符指的是字母、数字、下划线、汉字;非普通字符指符号。
print(re.findall(r'\w', "点评3497人,人均消费104元."))
print(re.findall('\W', "点评人数3497,人均消费104元."))
# \d 数字,\D 非数字
print(re.findall('\d', "点评人数3497,人均消费104元."))
print(re.findall('\D', "点评人数3497,人均消费104元."))
# \s 空白字符,\S 非空白字符
# 空字符指空格,\r 回车,\n 换行,\t 制表符,\f 换页符# 重复匹配 * 匹配前面的字符出现0次或多次
print(re.findall('wo*', "woooooooo~~w!"))
# + 匹配前面的字符出现一次或多次
print(re.findall('[A-Z][a-z]+', "How are you?"))
# ? 匹配前面的字符出现0次或1次
print(re.findall('-?\d+', "最高气温6摄氏度,最低气温-3摄氏度"))
# {n} 匹配前面的字符出现n次
# 匹配手机号
print(re.findall('1[34578]\d{9}', '13123456789,15123456789,18123456789,17123456789,14123456789'))
# {m,n} 匹配前面的字符出现m到n次
# 匹配qq号
print(re.findall(r'[1-9]\d{5,10}', r'1234,123456,1234567,12345678,123456789'))
# 找日期
print(re.findall(r'\d+', "今天是2022年6月11日"))
# 大写字符串
print(re.findall(r'[A-Z][a-z]+', 'How are you?'))
# ^ 匹配字符串的开始
print(re.findall(r'^\d[a-z]*', "1aa,2b,3c"))
# $ 匹配字符串的结束
print(re.findall(r'\d[a-z]*\d$', "1aa2"))
# \b 匹配单词的边界, \B 匹配单词的非边界
# 单词边界指的是单词的首尾字符与单词字符不同,非边界指的是首尾字符之外的字符。
print(re.findall(r'\b[a-z]+\b', "how are you?"))
# 特殊字符处理
# 在正则表达式元字符前加\则元字符就是去其特殊含义
# 验证数值类型(整数、小数)
print(re.findall('^\d+\.?\d*$', '3'))
# 贪婪模式(默认):匹配重复的元字符总是尽可能多的向后匹配内容。
# 非贪心模式:匹配重复的元字符总是尽可能少的向后匹配内容。
list_result = re.findall(r'<.+?>', "<张无忌,赵敏>,周芷若,<张翠山,殷素素>,小昭")
print(list_result)
# 分组 提取年月日:2022-06-1、2022-6-11、2022/08/11
print(re.findall(r'(\d+).(\d+).(\d+)', '2022-06-1,2022-6-11,2022/08/11'))
# 正向先行断言(? = 表达式)
# 至少包含一个大写字母
print(re.search(r'^(?=\w*[A-Z])\w*$', 'Tanfs'))
# 验证密码:6位,至少1个大写字母,一个下划线组成
print(re.findall(r'^(?=.*[A-Z])(?=.*_)[A-Za-z0-9_]{6,12}$', 'Tedu_1'))
# 验证时间格式
match_result = re.search(r"^\d{2}:\d{2}:\d{2}$", "18:01:02")
print(match_result)
"""
练习:书名号内保留第一个字符目标字符串:
《Python编程快速上手》,《Python编程无师自通》,《利用Python进行数据分析》结果:《P*》,《P*》,《利*》
"""
res1 = re.sub(r'\d', '*', '2a3b')
print(res1)
res = re.sub(r'《(.).*?》', '《\g<1>*》', "《Python编程快速上手》,《Python编程无师自通》,《利用Python进行数据分析》")
print(res)
# 分组替换:可以在替换字符串中使用\g<序号>使用正则表达式中分组数据
content = """
15:46
18 36
16 20
"""
print(re.sub(r'(\d{2})[:,\s](\d{2})', '\g<1>时\g<2>分', content))
# 使用多个切割符
print(re.split('[#,]', '悟空,26#男'))
# 编译正则表达式 重复使用
pattern = re.compile(r"^\d{2}:\d{2}:\d{2}$")
# 使用
print(pattern.search("18:01:02"))

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

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

相关文章

【数据库原理】(16)关系数据理论的函数依赖

一.函数依赖的概念 函数依赖是关系数据库中核心的概念&#xff0c;它指的是在属性集之间存在的一种特定的关系。这种关系表明&#xff0c;一个属性集的值可以唯一确定另一个属性集的值。 属性子集&#xff1a;在关系模式中&#xff0c;X和Y可以是单个属性&#xff0c;也可以是…

scVI与MultiVI

scVI&#xff1a;https://docs.scvi-tools.org/en/stable/user_guide/models/scvi.html MultiVI&#xff1a;https://docs.scvi-tools.org/en/stable/user_guide/models/multivi.html 目录 scVI生成推理任务 MultiVI生成推理 scVI single cell variational inference提出了一个…

elementui dialog 回车时却刷新整个页面

到处都是坑&#xff0c;这个坑填完另一个坑还在等你。。。坑坑相连&#xff0c;坑坑不同。。。 使用el-dialog弹出一个表单&#xff0c;当我无意间敲到回车键时&#xff0c;整个页面被刷新了&#xff0c;又是一脸的懵逼。。。 经过查找文档发现解决方案为上述截图标记。。。 e…

科锐16位汇编学习笔记 03 汇编指令

指令种类 数据传送指令算数运算类指令位操作类指令串操作类指令控制转移类指令处理器控制类指令 数据传送类指令 传送类指令不影响标志位&#xff0c;**除了标志位传送指令外。** 传送指令MOV&#xff08;move&#xff09; 说明 ​ 把一个字节或字的操作数从源地址传送至…

用golang 实现给图片添加文字水印

package mainimport ("fmt""github.com/golang/freetype""image""image/draw""image/jpeg""io""os""time" )func main() {// 打开原始图片file, err : os.Open("004.jpeg")if err …

解决Qt Creator中文乱码的问题

方法1 使用QStringLiteral()包裹中文字符串 QString str1"中文测试&#xff01;"; QString str2QStringLiteral("中文测试&#xff01;");方法2 #if _MSC_VER > 1600//MSVC2015>1899,MSVC_VER14.0 #pragma execution_character_set("utf-8&qu…

L1-011 A-B(Java)

题目 本题要求你计算A−B。不过麻烦的是&#xff0c;A和B都是字符串 —— 即从字符串A中把字符串B所包含的字符全删掉&#xff0c;剩下的字符组成的就是字符串A−B。 输入格式&#xff1a; 输入在2行中先后给出字符串A和B。两字符串的长度都不超过10的四次方&#xff0c;并且…

软文营销无效的原因,这些细节容易被忽略

不管你是卖产品还是做服务&#xff0c;不管是大公司还是小企业&#xff0c;都需要软文营销&#xff0c;然而营销也有好坏之分&#xff0c;好的营销会给客户带来更多企业和利润&#xff0c;无效营销不仅会耽误市场竞争的效率还会带来负面影响&#xff0c;今天媒介盒子就来和大家…

SpringMVC执行流程

SpringMVC执行流程 具体步骤 第一步&#xff1a;发起请求到前端控制器(DispatcherServlet) 第二步&#xff1a;前端控制器请求HandlerMapping查找 Handler 第三步&#xff1a;处理器映射器HandlerMapping向前端控制器返回Handler&#xff0c;HandlerMapping会把请求映射为Ha…

HTML---JQurey的基本使用

文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 本章目标 &#xff08;1&#xff09;能够搭建jQuery开发环境 &#xff08;2&#xff09;使用ready( )方法加载页面、掌握jQuery语法 使用addClass( )方法和css( )方法为元素添加CSS样式使用n…

echarts设置tooltip的层级

echarts设置tooltip的层级 tooltip: {trigger: "axis",extraCssText: z-index:3, // 修改层级borderColor: "rgba(0, 170, 255)",}, 完整的option示例如下&#xff1a; option {tooltip: {trigger: "axis",extraCssText: z-index:3,axisPoin…

Python 架构模式:附录 A 到 E

附录 A&#xff1a;摘要图和表 原文&#xff1a;Appendix A: Summary Diagram and Table 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 这是我们在书的最后看到的架构&#xff1a; 表 A-1 总结了每个模式及其功能。 表 A-1. 我们的架构组件及其功能 层组件描述领域…

Linux 进程和计划任务管理

一 内核功用 进程管理、内存管理、文件系统、网络功能、驱动程序、安全功能等 1 程序 是一组计算机能识别和执行的指令&#xff0c;运行于电子计算机上&#xff0c;满足人们某种需求的信息化工具 用于描述进程要完成的功能&#xff0c;是控制进程执行的指令集 2 进程 运行…

1877_SHA512校验的使用

全部学习汇总&#xff1a; GreyZhang/toolbox: 常用的工具使用查询&#xff0c;非教程&#xff0c;仅作为自我参考&#xff01; (github.com) 之前下载很多软件&#xff0c;尤其是开源软件的文件包的时候通常会看到一个校验文件。之前下载的时候我一般都是直接忽略&#xff0c;…

41-随机数.random(),ceil,floor,abs,比较两者或多者为较大值或较小值,round,找数组和对象的随机数

JavaScript数值操作&#xff0c;内置对象有&#xff1a;Math&#xff0c;Date&#xff0c;Array&#xff0c;String 1.Math内置对象 1.1向上取整ceil // 向上取整 ceil //有小数部分小数部分不要&#xff0c;整数部分1console.log(Math.ceil(3.14)); 1…

sqlalchemy expire_all 方法详解,强制刷新会话缓存

在 SQLAlchemy 中&#xff0c;expire_all() 方法是 Session 类的一个重要方法&#xff0c;用于使会话&#xff08;Session&#xff09;中所有当前加载的对象过期。这意味着下次访问任何已加载对象的属性时&#xff0c;SQLAlchemy 将从数据库中重新加载这些对象的最新状态。这是…

解释文本向量化的原理

文本向量化是将文本数据转换为数值向量的过程。在自然语言处理&#xff08;NLP&#xff09;中&#xff0c;文本向量化是一种常用的技术&#xff0c;用于将文本表示为计算机可以处理的形式。文本向量化的原理可以通过以下步骤解释&#xff1a; 1. 分词&#xff08;Tokenization…

金和OA C6 CarCardInfo.aspx SQL注入漏洞复现

0x01 产品简介 金和网络是专业信息化服务商,为城市监管部门提供了互联网+监管解决方案,为企事业单位提供组织协同OA系统开发平台,电子政务一体化平台,智慧电商平台等服务。 0x02 漏洞概述 金和OA C6 CarCardInfo.aspx接口处存在SQL注入漏洞,攻击者除了可以利用 SQL 注入漏洞…

SpringIOC之support模块EmbeddedValueResolutionSupport

博主介绍&#xff1a;✌全网粉丝5W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…

小梅哥Xilinx FPGA学习笔记22——ip核之FIFO

目录 一&#xff1a;章节说明 1.1 FIFO IP简介 1.2 FIFO Generato IP 核信号框图 1.3 实验任务 二&#xff1a;FIFO 写模块设计 2.1 简介 2.2 模块框图 2.3 模块端口与功能描述 2.4 写模块代码 三 FIFO 读模块设计 3.1 简介 3.2 模块框图 3.3 模块端口与功…