Python正则表达式(二)

news2025/3/31 10:14:52

目录

六、re.findall()函数和分组

1、0/1分组情况

2、多分组情况

七、或“|”的用法

1、作用域

2、用法

八、贪婪模式和懒惰模式

1、量词的贪婪模式

2、量词的懒惰模式

九、匹配对象

1、相关函数


六、re.findall()函数和分组

1、0/1分组情况

在正则表达式中,如果没有分组的话,re.findall()函数就会返回一个所有符合匹配的子串的集合的列表,有且只有一个分组时,re.findall()函数会返回一个列表,列表中的每一个元素就是一个符合匹配的子串在分组中的内容

例子:

import re

zzbds = "[a-z]+(\d+)[a-z]+"
str = "ac99o hs665cja jja666kc"

x = re.findall(zzbds , str)
print(x)

在这个例子的正则表达式中,我们加了一个分组,把\d+给括起来了,这样输出结果的时候,就是把各个符合要求的子串中,分组的部分给输出出来

看看输出:

我们可以把上面例子的分组去掉,来看看这两个的区别:

代码:

import re

zzbds = "[a-z]+\d+[a-z]+"    #删去了分组的括号
str = "ac99o hs665cja jja666kc"

x = re.findall(zzbds , str)
print(x)

输出:

这样就是输出各个符合要求的子串

2、多分组情况

在正则表达式中,若正则表达式中有多个分组,则re.findall()函数会返回一个包含多个元组的列表,每一个元组里面就是各个符合要求的子串中的分组的集合,顺序是一号分组,二号分组……

例子:

import re

zzbds = "a(\d+)b c(\d+)d"
str = "a99b c88d a2932b c8239d a3b c22d"

x = re.findall(zzbds , str)
print(x)

输出:

七、或“|”的用法

1、作用域

“ | ”表示或,如果没有放在分组的括号中,则作用范围就是整个正则表达式,或者到另外一个“ | ”处

2、用法

“ | ”是从左往右的短路匹配,即匹配上一个之后就不在计算能不能匹配上后面的了,比如正则表达式:(a | b),如果我们能用正则表达式a匹配上字符串,就不考虑b能后也能匹配上了

我们来看一个例子:

import re

a = "aa|aab"
b = "aabaaccddeeaab"
c = re.findall(a , b)
print(c)

结果:

在上面的例子中,其实aab也可以有匹配的,但是它前面有aa这个正则表达式,所以当我们能匹配到aa的时候,aab就不会再被考虑了,除非aa无法匹配成功,才会考虑aab

八、贪婪模式和懒惰模式

1、量词的贪婪模式

贪婪模式就是在匹配字符串的时候会尽量匹配较长的子串

量词中+ * ? {m,n}等都是贪婪模式的

例子:

import re

a = "<p>.+</p>"
b  = "<p>hello world !</p><p>你好!</p>"
c = re.findall(a , b)
print(c)

在这个例子中,我们想分别的输出两个HTML中的两个p元素,但是量词+是贪婪的,它会尽可能的匹配长的字符串,所以为了更长,他就把开头和结尾的那两个当作了匹配条件

所以输出是:

2、量词的懒惰模式

和贪婪模式相反,懒惰模式则是要匹配尽可能短的子串

我们在量词中+ * ? {m,n}这些量词的后面加上“?”,就是懒惰模式:

我们把上面的例子中添加一个问号:

import re

a = "<p>.+?</p>"    #添加了一个?
b  = "<p>hello world !</p><p>你好!</p>"
c = re.findall(a , b)
print(c)

输出:

我们发现,变成了我们想要输出的两个元素了

九、匹配对象

匹配对象是我们在使用正则表达式时,匹配成功之后返回的结果集,但有时可能不一定是匹配成功的字符串,而是迭代器,所以,我们需要一些函数来输出我们想要的内容:

1、相关函数

①group([n1] , [n2]……)

用于获得一个或多个分组匹配的字符串,指定多个参数的时候以元组的形式返回,上述中的n1,n2等是指的分组的组号

编号0即代表整个匹配的子串,即group()等价于group(0)

没有匹配的字符串的时候我们返回None

匹配了多次的组返回最后一次匹配的子串

注:group函数支持search,match,finditer

②groups([default])

以元组的形式返回全部分组匹配的字符串,相当于调用了group(1,2,3,4……last),如果没有匹配成功的字符串,就用default这个值代替,默认的话是None

③groupdict([default])

返回以有名字的组的名字为键,以该组匹配到的子串为值的一个字典,没有名字的分组不包含在内(我们用(?P<name>pattern)来给分组的组起名字)

例子:

import re

a = r"(?P<vvv>a(.+?)b)"
b  = "miascybku"
c = re.finditer(a , b)
for i in c :
    print(i.group("vvv"))

输出:

④start([group])

返回指定的组匹配的子串在string中的起始位置,group的默认值为0

⑤end([group])

返回指定的组匹配的子串在string中的结束位置(子串最后一个字符的位置+1),group的默认值为0

⑥span([group])

返回(start([group]) ,end([group]) ),group可以是组的编号,也可以是组的名字,缺省为0

⑦string

匹配时使用的子串

⑧lastindex

将最后一个匹配的分组的编号(不一定是最大的编号)输出,没有分组的话返回None

以上就是Python正则表达式(二)的全部内容:)

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

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

相关文章

图解AUTOSAR_SWS_FlashDriver

AUTOSAR Flash驱动(FLS)模块详解 AUTOSAR基础软件存储抽象层组件详细解析 目录 1. 概述 1.1. Flash驱动模块简介1.2. 功能和作用2. 架构设计 2.1. 模块架构2.2. API接口设计2.3. 状态机设计2.4. 异步操作时序2.5. 配置结构2.6. 任务处理流程3. 总结 3.1. 设计优势3.2. 应用场景…

哪吒汽车:一边熬夜蹦迪,一边找药投医

两年前&#xff0c;威马CEO沈晖发了个短视频&#xff0c;内容是“活下去&#xff0c;像牲口一样活下去”。 如今最能体会沈晖当时心情的&#xff0c;估计就是方运舟了。 作为哪吒汽车创始人兼董事长&#xff0c;他连续多次被限高&#xff0c;为了让哪吒汽车活下去&#xff0c…

Linux一步部署主DNS服务器

​ #!/bin/bash #部署DHCP服务 #userli 20250319if [ "$USER" ! "root" ]then echo"错误&#xff1a;非root用户&#xff0c;权限不足&#xff01;"exit 0fi#防火墙与高级权限 systemctl stop firewalld && systemctl disable firewalld…

图片隐私清理工具

图片隐私清理助手&#xff1a;一键清除图片敏感信息的神器 在数字时代&#xff0c;我们每天都会拍摄和分享大量图片&#xff0c;但你是否注意过这些图片中可能暗藏隐私信息&#xff1f;相机的GPS定位、拍摄参数等EXIF数据&#xff0c;都可能在不经意间泄露你的隐私。今天介绍的…

【UE5】摄像机晃动

目录 效果 步骤 一、游戏中晃动视角 二、Sequence中晃动视角 效果 步骤 一、游戏中晃动视角 1. 新建一个蓝图&#xff0c;父类选择“CameraShakeBase” 这里命名为“BP_MyCameraShake” 打开“BP_MyCameraShake”&#xff0c;根晃动模式这里设置为“Perlin噪点摄像机晃…

类和对象—继承(1)

目录 1、继承1.1、继承的概念1.2、继承的语法 2、子类访问父类成员2.1、子类中访问父类的成员变量2.2、子类中访问父类的成员方法2.3、super 关键字 3、子类构造方法 1、继承 在 Java 中&#xff0c;类对现实中的实体进行描述&#xff0c;而类实例化的对象用来表示现实中的实体…

试试智能体工作流,自动化搞定运维故障排查

APO 1.5.0版本全新推出的智能体工作流功能&#xff0c;让运维经验不再零散&#xff01;只需将日常的运维操作和故障排查经验转化为标准化流程&#xff0c;就能一键复用&#xff0c;效率翻倍&#xff0c;从此告别重复劳动&#xff0c;把时间留给更有价值的创新工作。更贴心的是&…

Linux应用:线程基础

线程介绍 进程是程序在操作系统里的一次执行过程&#xff0c;是系统进行资源分配和调度的基本单位&#xff1b;而线程是进程中的一个执行单元&#xff0c;是 CPU 调度和分派的基本单位。一个进程可以包含多个线程&#xff0c;这些线程共享进程的资源&#xff0c;如内存空间、文…

要创建一个基于Spring Boot、Thymeleaf、MyBatis Plus和MySQL的简单表格增删改查(CRUD)项目

文章目录 要创建一个基于Spring Boot、Thymeleaf、MyBatis Plus和MySQL的简单表格增删改查&#xff08;CRUD&#xff09;项目1. 创建Spring Boot项目2.项目配置2.1 依赖yml配置数据库表配置 3.代码实现3.1 实体类3.2 数据访问层3.3 服务层3.4 控制层3.5 Thymeleaf模板 要创建一…

解决Cubemx生产的 .ioc文件不能外部打开的方法

正常来说&#xff0c;cubemx生成的文件会有图标 但是当图标白色的时候&#xff0c;无法通过直接点击这个文件进入cubemx 1.首先检查java环境是不是装的JAVA8&#xff0c;如果是的话进行第二步操作&#xff1b; 2.重新安装一次cubemx&#xff0c;在安装的时候选择为我安装&…

在 Linux(Ubuntu / CentOS 7)上快速搭建我的世界 MineCraft 服务器,并实现远程联机,详细教程

Linux 部署 MineCraft 服务器 详细教程&#xff08;丐版&#xff0c;无需云服务器&#xff09; 一、虚拟机 Ubuntu 部署二、下载 Minecraft 服务端三、安装 JRE 21四、安装 MCS manager 面板五、搭建服务器六、本地测试连接七、下载樱花&#xff0c;实现内网穿透&#xff0c;邀…

Transformer | 一文了解:缩放、批量、多头、掩码、交叉注意力机制(Attention)

源自: AINLPer&#xff08;每日干货分享&#xff01;&#xff01;&#xff09; 编辑: ShuYini 校稿: ShuYini 时间: 2025-3-27 更多&#xff1a;>>>>专注大模型/AIGC、学术前沿的知识分享&#xff01; 引言 之前的文章&#xff1a;2万字长文&#xff01;一文了解…

原型验证后客户推翻原有需求,如何止损

原型验证后客户推翻原有需求时止损的有效方法包括&#xff1a;迅速评估影响范围、立即开展沟通确认、调整项目计划和资源配置、更新变更管理流程、协商成本分担机制。其中&#xff0c;迅速评估影响范围是关键&#xff0c;项目团队必须立即明确此次变更的具体影响&#xff0c;包…

六、小白学JAVA-类和对象

1、什么是类和对象 人类---类&#xff1a;走路、说话、学习 人---对象&#xff1a;具体到某个人&#xff0c;就是对象&#xff0c;走路、说话、学习&#xff0c;每个人都是独特的人。 public class Person {String name;public void walk() {System.out.println("我会走…

STM32硬件IIC与OLED使用

OLED屏幕介绍 OLED即有机发光管(Organic Light-Emitting Diode,OLED)。OLED显示技术具有自发光、广视角、几乎无穷高的对比度、较低功耗、极高反应速度、可用于绕曲性面板、使用温度范围广、构造及制程简单等有点&#xff0c;被认为是下一代的平面显示屏新兴应用技术 OLED显示…

基于Spring Boot的电动车智能充电服务平台的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

十、JavaScript对象

一、对象 创建对象的方法有三种&#xff1a;字面量、new、构造函数。 1.利用字面量创建对象 花括号{}里面包含了表达这个具体事物&#xff08;对象&#xff09;的属性和方法 // 1.利用对象字面量创建对象{}// var obj {}; // 创建了一个空的对象var obj {uname: black,ag…

FFmpeg开发学习:音视频封装

1.基本流程 1.输入参数 输出文件路径 char *output 视频编码参数 AVCodecParameters *video_par 音频编码参数 AVCodecParameters *audio_par 数据包 AVPacket *packets[] 2.封装流程 &#xff08;1&#xff09;创建输出的上下文AVFormatContext指针 AVFormatContext *out_fm…

hackmyvm-reversteg

arp-scan -l nmap -sS -v 192.168.222.45 在源码中可以看到 根据下面的提示可以猜测117db0148dc179a2c2245c5a30e63ab0是一个图像文件 将图片下载到本地 隐写术 在两张图片上使用strings,发现有一些可打印的字符串 strings 117db0148dc179a2c2245c5a30e63ab0.jpg base64解码…

UE4学习笔记 FPS游戏制作17 让机器人持枪 销毁机器人时也销毁机器人的枪 让机器人射击

添加武器插槽 打开机器人的Idle动画&#xff0c;方便查看武器位置 在动画面板里打开骨骼树&#xff0c;找到右手的武器节点&#xff0c;右键添加一个插槽&#xff0c;重命名为RightWeapon&#xff0c;右键插槽&#xff0c;添加一个预览资产&#xff0c;选择Rifle&#xff0c;根…