Python:正则表达式相关整理
最近因为一些原因频繁使用正则表达式,因为以前系统整理过关于正则表达式的相关知识,所以这里仅记录使用期间遇到的问题。
本文内容基于re
包
1. match和search方法的区别
在Python中,re.search
和re.match
都是用于匹配字符串的正则表达式函数,但二者在匹配模式上有明显的区别。具体如下:
re.match
: 该函数只在字符串的开始位置进行匹配。如果开头不匹配,就不会继续匹配下去。其作用类似于从字符串的开位置起寻找能找到符合正则表达式模式的子串。re.search
: 该函数会在整个字符串中搜索,直到找到一个匹配的子字符串。其作用类似于从完整的字符串中找到与正则表达式完整匹配的子串。
代码举例如下:
import re
rule=r'(ab|cd).*(ef|gh)' #以ab或cd开头,以ef或gh结尾的字符串
str1='abef'
str2="dcabefabef"
str3="abxyefabstefsc"
print(re.match(rule,str1))
print(re.match(rule,str2))
print(re.match(rule,str3))
print(re.search(rule,str1))
print(re.search(rule,str2))
print(re.search(rule,str3))
其代码执行结果如下:
<re.Match object; span=(0, 4), match='abef'>
None
<re.Match object; span=(0, 12), match='abxyefabstef'>
<re.Match object; span=(0, 4), match='abef'>
<re.Match object; span=(2, 10), match='abefabef'>
<re.Match object; span=(0, 12), match='abxyefabstef'>
从执行结果中可以发现,这两个方法的返回类型是一样的。
另外,使用^
和$
可以验证完整的字符串是否符合正则表达式规定的模式。具体举例如下:
rule=r'^(ab|cd).*(ef|gh)$' #以ab或cd开头,以ef或gh结尾的字符串
str1='abef'
str2="dcabefabef"
print(re.match(rule,str1))
print(re.match(rule,str2))
print(re.search(rule,str1))
print(re.search(rule,str2))
其执行结果如下:
<re.Match object; span=(0, 4), match='abef'>
None
<re.Match object; span=(0, 4), match='abef'>
None
2. 利用正则表达式实现某些字符必须出现某些字符不能出现的效果
组合使用零宽断言可以实现利用利用正则表达式实现某些字符必须出现某些字符不能出现的效果。具体举例如下:
rule=r'^(?=.*(ab|cd))(?!.*xy).*$' #ab或cd必须出现,且不能包含xy
str1="132ab23re"
str2="sefeabsefewxyseid"
str3="xyseqeqab"print(re.match(rule,str1))
print(re.match(rule,str2))
print(re.match(rule,str3))
其结果如下:
<re.Match object; span=(0, 9), match='132ab23re'>
None
None
但是在使用这种方式的时候要注意一点(ab|cd)
的后面不要添加.*
, 这个需要放到xy
的前面,否则实现不了同样的效果,展示如下:
import rerule=r'^(?=.*(ab|cd).*)(?!xy)$'
str1="132ab23re"
str2="sefeabsefewxyseid"
str3="xyseqeqab"print(re.match(rule,str1))
print(re.match(rule,str2))
print(re.match(rule,str3))
其执行结果如下:
None
None
None
从结果中我们可以看到,str1和str2是符合要求但结果并没有匹配上。
另外,在这种情况下^
和$
的使用也需要注意,如果不添加这两种断言,结果可能也是错误的。展示如下:
import rerule=r'(?=.*(ab|cd))(?!.*xy)'
str1="132ab23re"
str2="sefeabsefewxyseid"
str3="xyseqeqab"print(re.match(rule,str1))
print(re.match(rule,str2))
print(re.match(rule,str3))
其结果如下:
<re.Match object; span=(0, 0), match=''>
None
None
相关文章:

Python:正则表达式相关整理
最近因为一些原因频繁使用正则表达式,因为以前系统整理过关于正则表达式的相关知识,所以这里仅记录使用期间遇到的问题。 本文内容基于re包 1. match和search方法的区别 在Python中,re.search和re.match都是用于匹配字符串的正则表达式函数&a…...

ChatGPT对话:有关花卉数据集
【编者按】编者准备研究基于深度学习的花卉识别,首先需要花卉数据集。 后续,编者不断会记录研究花卉识别过程中的技术知识,敬请围观 1问:推荐一下用于深度学习的花卉数据集 ChatGPT 以下是一些用于深度学习的优秀花卉数据集&am…...

特征向量及算法
数据挖掘流程 加载数据 把需要的模型数据先计算出来 特征工程 提取数据特征,对特征数据进行清洗转化 数据的筛选和清洗数据转化 类型转为 性别 男,女 ----> 1,0特征交叉 性别/职业/收入 —> 新特这 优质男性程序员 将多个特征值组合在一起特征筛选…...

cpp 强制转换
一、static_cast static_cast 是 C 中的一个类型转换操作符,用于在类的层次结构中进行安全的向上转换(从派生类到基类)或进行不需要运行时类型检查的转换。它主要用于基本数据类型之间的转换、对象指针或引用的向上转换(即从派生…...

MySQL字符串魔法:拼接、截取、替换与定位的艺术
在数据的世界里,MySQL作为一把强大的数据处理利剑,其字符串处理功能犹如魔术师手中的魔法棒,让数据变换自如。今天,我们就来一场关于MySQL字符串拼接、截取、替换以及查找位置的奇幻之旅,揭开这些操作的神秘面纱。 介绍…...

在 Windows 上开发.NET MAUI 应用_1.安装开发环境
开发跨平台的本机 .NET Multi-platform App UI (.NET MAUI) 应用需要 Visual Studio 2022 17.8 或更高版本,或者具有 .NET MAUI 扩展的最新 Visual Studio Code。要开始在 Windows 上开发本机跨平台 .NET MAUI 应用,请按照安装步骤安装 Visual Studio 20…...

深度学习驱动智能超材料设计与应用
在深度学习与超材料融合的背景下,不仅提高了设计的效率和质量,还为实现定制化和精准化的治疗提供了可能,展现了在材料科学领域的巨大潜力。深度学习可以帮助实现超材料结构参数的优化、电磁响应的预测、拓扑结构的自动设计、相位的预测及结构…...

Netty UDP
Netty在UDP(用户数据报协议,User Datagram Protocol)通信中的应用非常广泛,特别是在对实时性要求较高、对数据准确性要求相对较低的场景中,如视频传输、语音通信等。以下是对Netty在UDP通信中的详细解析: …...

Spring Framework各种jar包官网下载2024年最新下载官方渠道。
Spring其实就是一个大家族,它包含了Spring Framework,Spring Boot等一系列技术,它其实就是由许许多多的jar包构成,我们要使用Spring的框架,就要去下载支持这个框架的jar包即可。 1.官网下载Spring Framework的jar包 官…...

【Unity】RPG2D龙城纷争(十三)升级系统
更新日期:2024年7月16日。 项目源码:第五章发布(正式开始游戏逻辑的章节) 索引 简介一、升级系统数据集1.升级公式2.获得经验值公式3.预览所有等级经验值二、为关卡配置升级系统三、玩家角色获得经验事件四、玩家角色升级事件五、计算玩家角色获得经验值六、计算玩家角色是…...

保障低压设备安全!中国星坤连接器精密工艺解析!
在现代电子设备中,连接器扮演着至关重要的角色,它们是电子系统之间沟通的桥梁。随着技术的发展,对连接器的需求也在不断提升,特别是在低电压应用领域。中国星坤最新推出的低压连接器,以其精密性和安全性,为…...

中国星坤X0800HI系列线对板连接器:创新技术连接,引领智能家居未来!
近日,中国星坤推出的X0800HI系列线对板连接器,凭借其独特的设计和卓越的性能,引起了业界的广泛关注。 X0800HI系列线对板连接器在极小空间内实现了线对板的W-B连接,这不仅解决了传统连接方式中剥线和焊接的繁琐步骤,还…...

SPring Boot整合第三方框架
springboot整合第三方框架 1. 整合mybatis 1.1引入依赖——pom.xml配置文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instanc…...

读取sqlserver数据库中varbinary(max)类型的内容,并将图片信息显示在前端页面
目录 1.varbinary(max)的说明 2.图片显示 3.总结 1.varbinary(max)的说明 varbinary(max) 是一种SQL Server数据库字段类型,用于存储二进制数据,可以存储最大长度的二进制数据。以下是关于 varbinary(max) 的说明: 存储容量: 可以存储最大…...

orcad导出pdf 缺少title block
在OrCAD中导出PDF时没有Title Block 最后确认问题在这里: 要勾选上Title Block Visible下面的print...

XML 验证器:确保数据完整性和准确性的关键工具
XML 验证器:确保数据完整性和准确性的关键工具 引言 在当今数字化时代,数据的有效管理和交换至关重要。XML(可扩展标记语言)作为一种用于存储和传输数据的语言,广泛用于各种应用程序和系统之间。为确保XML数据的完整…...

opencv学习:图像视频的读取截取部分图像数据颜色通道提取合并颜色通道边界填充数值计算图像融合
一、计算机眼中的图像 1.图像操作 构成像素点的数字在0~255之间 RGB叫做图像的颜色通道 h500,w500 2.灰度图像 3. 彩色图像 4.图像的读取 5.视频的读取 cv2.VideoCapture()--在OpenCV中,可以使用VideoCapture来读取视频文件,或是摄像头数…...

数据结构——单链表详解(超详细)(2)
前言: 上一篇文章小编简单的介绍了单链表的概念和一些函数的实现,不过为了保证文章的简洁,小编把它分成了两篇来写,这一篇小编紧接上一篇文章继续写单链表函数功能的实现: 目录: 1.单链表剩余函数的编写 1.…...

类和对象(2
*续上文中的运算符重载 4 重载运算符时,有前置和后置的,运算符重载的函数名都是operator, 无法很好区分 所以c规定,后置重载时,增加一个int形参 与前置做区分 5 重载<<和>>时需要重载为全局函数, 因为重载为成员函数时, this指针默认抢占了第一个形参位, 第一个形参…...

AcWing 668. 游戏时间2
读取四个整数 A,B,C,D𝐴,𝐵,𝐶,𝐷,用来表示游戏的开始时间和结束时间。 其中 A𝐴 和 B𝐵 为开始时刻的小时和分钟数,C𝐶 和 D𝐷 为结束时刻的小时和分钟数。…...

AI发展下的伦理挑战,应当如何应对?
针对人工智能(AI)发展中面临的伦理挑战,构建一个全面、有效的治理体系至关重要。以下是对三大关键方向——隐私保护、算法公正与透明度、深度伪造管控——的深入探讨与具体实践方案: 方向一:构建可靠的AI隐私保护机制…...

Java面试题--JVM大厂篇之深入解析JVM中的Serial GC:工作原理与代际区别
目录 引言: 正文: 一、Serial GC工作原理 年轻代垃圾回收(Minor GC): 老年代垃圾回收(Major GC或Full GC): 二、年轻代和老年代的区别 年轻代(Young Generation&a…...

网络安全高级工具软件100套
1、 Nessus:最好的UNIX漏洞扫描工具 Nessus 是最好的免费网络漏洞扫描器,它可以运行于几乎所有的UNIX平台之上。它不止永久升级,还免费提供多达11000种插件(但需要注册并接受EULA-acceptance–终端用户授权协议)。 它…...

Ubuntu 添加gcc头文件搜索路径
对个人用户生效 sudo vim ~/.bashrc在该文件末尾添加 #gcc C_INCLUDE_PATH$C_INCLUDE_PATH:your_path export C_INCLUDE_PATH #g CPLUS_INCLUDE_PATH$CPLUS_INCLUDE_PATH:your_path export CPLUS_INCLUDE_PATH最后,重启终端即可生效 可用以下命令查看搜索路径 ec…...

c++写数据结构进入文件
以下定义一个数据结构 struct SData {std::string url;int number;std::string memo; };写入文件 void StorageDataToFile(const std::string& filename, const SData& data) {std::ofstream outFile(filename);if (outFile.is_open()) {// 使用std::stringstream格式…...

Java实验4
实验内容 考试题 要求在一个界面内至少显示5道选择题,每道题4个选项。题目从数据库读取。表结构自定义。 另有2个命令按钮,分别为“重新答题”(全部选项及正确答题数清空)和“提交”(计算),在…...

优化 Java 数据结构选择与使用,提升程序性能与可维护性
优化 Java 数据结构选择与使用,提升程序性能与可维护性 引言 在软件开发中,数据结构的选择是影响程序性能、内存使用以及代码可维护性的关键因素之一。Java 作为一门广泛使用的编程语言,提供了丰富的内置数据结构,如数组、链表、…...

华为USG6000V防火墙安全策略用户认证
目录 一、实验拓扑图 二、要求 三、IP地址规划 四、实验配置 1🤣防火墙FW1web服务配置 2.网络配置 要求1:DMZ区内的服务器,办公区仅能在办公时间内(9:00-18:00)可以访问,生产区的设备全天可以访问 要求2:生产区不…...

Windows 应急响应手册v1.2 -百度网盘下载
家好,《Windows 应急响应手册 v1.2》 发布啦! 本次是一个大更新,解决了两个大问题,添加了4个大的事件处置流程以及一些更新,下载链接在文末 两个大问题是: Windows 平台的 Adobe acrobat DC 、Firefox 浏…...

Billu_b0x靶机
信息收集 使用arp-scan 生成网络接口地址来查看ip 输入命令: arp-scan -l 可以查看到我们的目标ip为192.168.187.153 nmap扫描端口开放 输入命令: nmap -min-rate 10000 -p- 192.168.187.153 可以看到开放2个端口 nmap扫描端口信息 输入命令&…...