当前位置: 首页 > news >正文

Python:正则表达式相关整理

最近因为一些原因频繁使用正则表达式,因为以前系统整理过关于正则表达式的相关知识,所以这里仅记录使用期间遇到的问题。
本文内容基于re

1. match和search方法的区别

  在Python中,re.searchre.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:正则表达式相关整理

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

ChatGPT对话:有关花卉数据集

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

特征向量及算法

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

cpp 强制转换

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

MySQL字符串魔法:拼接、截取、替换与定位的艺术

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

在 Windows 上开发.NET MAUI 应用_1.安装开发环境

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

深度学习驱动智能超材料设计与应用

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

Netty UDP

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

Spring Framework各种jar包官网下载2024年最新下载官方渠道。

Spring其实就是一个大家族&#xff0c;它包含了Spring Framework&#xff0c;Spring Boot等一系列技术&#xff0c;它其实就是由许许多多的jar包构成&#xff0c;我们要使用Spring的框架&#xff0c;就要去下载支持这个框架的jar包即可。 1.官网下载Spring Framework的jar包 官…...

【Unity】RPG2D龙城纷争(十三)升级系统

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

保障低压设备安全!中国星坤连接器精密工艺解析!

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

中国星坤X0800HI系列线对板连接器:创新技术连接,引领智能家居未来!

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

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数据库字段类型&#xff0c;用于存储二进制数据&#xff0c;可以存储最大长度的二进制数据。以下是关于 varbinary(max) 的说明&#xff1a; 存储容量: 可以存储最大…...

orcad导出pdf 缺少title block

在OrCAD中导出PDF时没有Title Block 最后确认问题在这里&#xff1a; 要勾选上Title Block Visible下面的print...

XML 验证器:确保数据完整性和准确性的关键工具

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

opencv学习:图像视频的读取截取部分图像数据颜色通道提取合并颜色通道边界填充数值计算图像融合

一、计算机眼中的图像 1.图像操作 构成像素点的数字在0~255之间 RGB叫做图像的颜色通道 h500&#xff0c;w500 2.灰度图像 3. 彩色图像 4.图像的读取 5.视频的读取 cv2.VideoCapture()--在OpenCV中&#xff0c;可以使用VideoCapture来读取视频文件&#xff0c;或是摄像头数…...

数据结构——单链表详解(超详细)(2)

前言&#xff1a; 上一篇文章小编简单的介绍了单链表的概念和一些函数的实现&#xff0c;不过为了保证文章的简洁&#xff0c;小编把它分成了两篇来写&#xff0c;这一篇小编紧接上一篇文章继续写单链表函数功能的实现&#xff1a; 目录&#xff1a; 1.单链表剩余函数的编写 1.…...

类和对象(2

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

AcWing 668. 游戏时间2

读取四个整数 A,B,C,D&#x1d434;,&#x1d435;,&#x1d436;,&#x1d437;&#xff0c;用来表示游戏的开始时间和结束时间。 其中 A&#x1d434; 和 B&#x1d435; 为开始时刻的小时和分钟数&#xff0c;C&#x1d436; 和 D&#x1d437; 为结束时刻的小时和分钟数。…...

别再只盯着CLIP了!用PaddlePaddle复现VSE++图文互搜模型(附Flickr8k数据集处理全流程)

突破CLIP局限&#xff1a;基于PaddlePaddle的轻量化图文检索实战指南 在当今多模态AI领域&#xff0c;CLIP等大型模型虽然表现出色&#xff0c;但其庞大的参数量和计算需求让许多开发者和企业望而却步。本文将带您探索一种更轻量、更高效的替代方案——VSE模型&#xff0c;并手…...

PyTorch 2.8视频生成环境搭建:FFmpeg 6.0+Diffusers开箱即用教程

PyTorch 2.8视频生成环境搭建&#xff1a;FFmpeg 6.0Diffusers开箱即用教程 1. 环境准备与快速验证 在开始视频生成项目前&#xff0c;我们需要确保基础环境已经正确配置。本教程使用的镜像已经预装了所有必要的组件&#xff0c;包括&#xff1a; 核心框架&#xff1a;PyTor…...

YOLOv8鹰眼目标检测实战:一键部署,实时识别80种物体(附WebUI)

YOLOv8鹰眼目标检测实战&#xff1a;一键部署&#xff0c;实时识别80种物体&#xff08;附WebUI&#xff09; 1. 项目概述 1.1 什么是YOLOv8鹰眼目标检测 YOLOv8鹰眼目标检测是基于Ultralytics最新YOLOv8模型的工业级解决方案。它能够在毫秒级别完成图像中多达80类物体的识别…...

智慧树网课助手:智能化学习效率提升解决方案

智慧树网课助手&#xff1a;智能化学习效率提升解决方案 【免费下载链接】zhihuishu 智慧树刷课插件&#xff0c;自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 一、问题诊断&#xff1a;在线学习的效率困境与技术破局 1.1 …...

基于CIEDE2000标准的AI图像分层技术:从像素聚类到设计效率革命

基于CIEDE2000标准的AI图像分层技术&#xff1a;从像素聚类到设计效率革命 【免费下载链接】layerdivider A tool to divide a single illustration into a layered structure. 项目地址: https://gitcode.com/gh_mirrors/la/layerdivider 在数字设计领域&#xff0c;将…...

手把手教你用V4L2框架开发USB摄像头驱动(附UVC协议解析)

深入解析V4L2框架下的USB摄像头驱动开发与UVC协议实战 在嵌入式Linux开发领域&#xff0c;视频采集设备的驱动开发一直是工程师们需要掌握的核心技能之一。随着物联网和边缘计算的快速发展&#xff0c;USB摄像头在各种智能设备中的应用越来越广泛&#xff0c;从工业检测到智能家…...

Realistic Vision V5.1虚拟摄影棚快速上手:新手3步生成比肩单反的人像

Realistic Vision V5.1虚拟摄影棚快速上手&#xff1a;新手3步生成比肩单反的人像 1. 为什么选择Realistic Vision V5.1虚拟摄影棚 如果你一直想尝试专业级人像摄影&#xff0c;但又苦于没有昂贵的单反设备和摄影棚&#xff0c;Realistic Vision V5.1虚拟摄影棚就是为你量身定…...

Axios遭供应链投毒攻击(附排查与紧急补救指南)

每周下载3亿次的Axios遭供应链投毒攻击&#xff0c;附排查与修复指南 事件概述 2026 年 3 月 31 日&#xff0c;著名云安全平台 StepSecurity 监测到&#xff0c;在 JavaScript 生态系统中最受欢迎的 HTTP 客户端库 Axios&#xff08;每周下载量超 3 亿次&#xff09;遭遇了严重…...

基于 stm32 智能水壶的设计与实现

收藏关注不迷路&#xff01;&#xff01; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;还有大家在毕设选题&#xff08;免费咨询指导选题&#xff09;&#xff0c;项目以及论文编写等相关问题都可以给我留言咨询&#xff0c;希望帮助更多…...

汽车电子电气架构演进:从分布式 ECU 到中央计算平台

目录 一、电子电气架构的六大演进阶段 二、高性能处理器与软件平台重构 三、宝马分层式电子电气架构设计 四、中央通信服务器与可扩展网络 五、车云一体架构与软件开发变革 六、架构升级代码示例&#xff1a;SOA 服务注册与调用 七、中央计算平台配置示例&#xff08;代码…...