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

Python基础课堂最后一课23——正则对象

文章目录

  • 前言
  • 一、正则对象是什么?
  • 二、正则表达式基本分类
    • 1.普通字符
    • 2.元字符
  • 总结


前言

很开心能和你们一些学习进步,在这一个多月的时间中,是你们让我坚持了下来,完成了python基础课堂编写,不管如何,我们或多或少都会有所收获,到此,基础课堂也就告一段落了。在不久的将来我将会进行爬虫栏目的编写,感兴趣的uu可以提前关注我,让我们继续学习进步!!!


一、正则对象是什么?

正则对象是在使用正则表达式时创建的对象。它可以用来进行字符串匹配、替换、提取等操作。正则对象包含了正则表达式的模式以及一些可选的标志,可以根据这些模式和标志来进行匹配操作。

接下来让我们详细了解一下正则表达式吧

介绍:在实际开发过程中经常会有查找符合某些复杂规则的字符串的需要,比如:邮箱、图片地址,手机号码等,这时候想匹配或者查找符合某些规则的字符串就可以使用正则表达式了。

概念:正则表达式就是记录文本规则的代码

表达式: 0\d{2}-\d{8}这个就是一个正则表达式,表达的意思是匹 配的是座机号码。

优缺点
1. 正则表达式的语法很令人头疼﹐可读性差
2. 正则表达式通用性很强﹐能够适用于很多编程语言

二、正则表达式基本分类

1.普通字符

见名知意,就是想要找到那个字符就直接输入该字符即可,比较简单常见,这里就不再过多介绍了。

2.元字符

  1. 匹配单个字符

分类:(在这里需要用到re模块,使用的时候下载导入即可)
元字符的分类
代码如下(示例):

print(re.findall('.', 'hello Abner world 123'))  # ['h', 'e', 'l', 'l', 'o', ' ', 'A', 'b', 'n', 'e', 'r', ' ', 'w', 'o', 'r', 'l', 'd', ' ', '1', '2', '3']
print(re.findall('\w', 'hello Abner world 123__'))  # ['h', 'e', 'l', 'l', 'o', 'A', 'b', 'n', 'e', 'r', 'w', 'o', 'r', 'l', 'd', '1', '2', '3', '_', '_']
print(re.findall('\s', 'hello Abner world 123'))  # [' ', ' ', ' ']
print(re.findall('\d', 'hello Abner world 123'))  # ['1', '2', '3']
print(re.findall('\n', 'hello Abner \n world 123'))  # ['\n']
print(re.findall('\t', 'hello Abner world 123'))  #[]
print(re.findall('\d{11}', '我的电话号码是:12345678901'))  # ['12345678901']
print(re.findall('[^0-9]', '我的电话号码是:12345678901'))  # ['我', '的', '电', '话', '号', '码', '是', ':']
print(re.findall('[0-9]', '我的电话号码是:12345678901'))  # ['1', '2', '3', '4', '5', '6', '7', '8', '9', '1', '0']
  1. 匹配多个字符(需要用到量词)

量词:控制元字符出现的次数
量词
代码如下(示例):

# 注意:量词都只作用于前一个字符
# 1 *:前一个字符重复0次或更多次
res = re.findall('b*','abbbbbbabbbbabbab')
print(res)# 2 +:前一个字符最少出现一次,最多任意次
res = re.findall('b+','abbbbbbabbbbabbab')
print(res)# 3 ?:前一个字符最少出现0次,最多只重复一次
res = re.findall('b?','abbbbbbabbbbabbab')
print(res)# 4 {n}:前一个字符匹配n次
# {n,}:前一个字符匹配n次或更多次,最少匹配n次,大于n次会匹配到
# {n,m}:前一个字符最少出现n次,最多出现m次。 只在范围内res = re.findall('1\d{10}','16451556455')
print(res)
  1. 匹配开头和结尾
# 1  ^ 匹配固定字符的开始
res = re.findall('^1\d{10}','16451556455')
print(res)
# 2  $ 匹配固定字符串的结尾
tel_li = ['15875845987','19945857694','17586945698','17584593658']
for tel in tel_li:res = re.findall('^1\d{9}8$',tel)if res:print(res[0])# 3 a|b  匹配字符a或b
# 注意:|是分开的两个表达式
res = re.findall('\d{6,10}@qq|sina.com','1258458@qq.com  594554@sina.com')
print(res)# 4 () 在符合整个正则表达式的情况下,只把括号里的正则表达式数据提取出来
str1 = """
<h1>一级标题</h1>
<div>盒子</div>
<span>span标签</span>
<a>超链接</a>
"""
res = re.findall('>(.+)<',str1)
print(res)
  1. 贪婪和非贪婪
    贪婪:在获取数据的时候有多少就要多少
    非贪婪:相反 越少越好 没有都可以

.* .+ 满足匹配的情况下,匹配尽可能长的字符串

.*? 在满足匹配的时候 尽可能的匹配最少的字符
1.re.findall()
作用:从头到尾开始匹配,找到所有符合正则表达式的数据,返回一个列表;如果没有找到,返回的是一个空列表

str1 = "今天下课后我们一起玩游戏,去玩英雄联盟游戏,玩到天亮,玩一个晚上的游戏"
# 提取 玩的是什么游戏?
res = re.findall('玩.*游戏',str1)  # ['玩游戏,去玩英雄联盟游戏,玩到天亮,玩一个晚上的游戏']
res = re.findall('(玩.*?游戏)',str1)  # ['玩游戏', '玩英雄联盟游戏', '玩到天亮,玩一个晚上的游戏']
res = re.findall('去玩(.*?)游戏,',str1)  # ['英雄联盟']
print(res)

2.re.search()
作用:检测到一次结果直接把数据返回 ,返回的是一个match ,.group()提取数据

res = re.findall('\d+', '我的电话号码:10086,它的电话:10010')
print(res)  # ['10086', '10010']res = re.search('\d+', '我的电话号码:10086,它的电话:10010')
print(res)  # <re.Match object; span=(7, 12), match='10086'>
print(res.group())

3.re.match()
特点:只能从头部开始匹配,数据结果在中间匹配不到,返回的是None如果提取数据会报错(空没有group报错)

res = re.match('\d+', '我的电话号码:10086,他的电话:10010')
print(res)  # None  头部不符合正则表达式的规则就是Noneres = re.match('\d+', '10086,它的电话:10010')
print(res)
print(res.group())   # 跟^

总结

最后,祝愿我们的未来越来越来,每个人都能活出属于自己的人生!

当你想要放弃的时候想想当初为什么坚持到这里。

相关文章:

Python基础课堂最后一课23——正则对象

文章目录 前言一、正则对象是什么&#xff1f;二、正则表达式基本分类1.普通字符2.元字符 总结 前言 很开心能和你们一些学习进步&#xff0c;在这一个多月的时间中&#xff0c;是你们让我坚持了下来&#xff0c;完成了python基础课堂编写&#xff0c;不管如何&#xff0c;我们…...

【算法训练营】凸包,图(Python实现)

凸包 描述 给定n个二维平面上的点&#xff0c;求他们的凸包。 输入 第一行包含一个正整数n。 接下来n行&#xff0c;每行包含两个整数x,y&#xff0c;表示一个点的坐标。 输出 令所有在凸包极边上的点依次为p1,p2,...,pm&#xff08;序号&#xff09;&#xff0c;其中m表…...

webpack5零基础入门-6webpack处理图片资源

1.在webpack5中file-loader和url-loader为内置模块 通过在加载器中配置rule即可激活 {test: /\.(png|jpe?g|gif|webp)$/,type: asset} 2.使用webpack进行打包 执行npx webpack 可以看到图片资源打包后都被放到了dist文件目录下 3.使用webpack进行图片格式转换为base64 优势…...

计算机基础知识QA

目录 数据库 --mysql 关联查询 唯一索引如何创建&#xff0c;语句 更新表字段语句 查看字段类型 --redis 使用场景 数据结构 设置超时时间 linux 常用命令 发布版本 安装一个东西&#xff0c;发现一个东西安装的很慢&#xff0c;如何切换ip地的源&#xff1f;-&g…...

微信小程序一次性订阅requestSubscribeMessage授权和操作详解

一次性订阅&#xff1a;用户订阅一次发一次通知 一、授权 — requestSubscribeMessage Taro.requestSubscribeMessage({tmplIds: [], // 需要订阅的消息模板的id的集合success (res) {console.log("同意授权", res)},fail(res) {console.log(拒绝授权, res)}})点击或…...

ARM 汇编指令:(三)运算处理指令

目录 一.add指令 二.sub指令 三.MUL指令 一.add指令 add用于执行实现两个寄存器或寄存机或寄存器与立即数的相加操作。它可以用于整数、浮点数等各种数据类型的加法运算。 ADD{cond}{S} Rd,操作数,操作数 1.不带进位加法指令add add r1, r2, #4 //r1 r2 4 add r1, r2 …...

【C++庖丁解牛】STL简介 | string容器初次见面

&#x1f341;你好&#xff0c;我是 RO-BERRY &#x1f4d7; 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f384;感谢你的陪伴与支持 &#xff0c;故事既有了开头&#xff0c;就要画上一个完美的句号&#xff0c;让我们一起加油 目录 1. 什么是STL2. STL的版本…...

记OnlyOffice的两个大坑

开发版&#xff0c;容器部署&#xff0c;试用许可已安装。 word&#xff0c;ppt&#xff0c;excel均能正常浏览。 自带的下载菜单按钮能用。 但config里自定义的downloadAs方法却不一而足。 word能正常下载&#xff0c;excel和ppt都不行。 仔细比对调试了代码。发现app.js…...

分享几个Google Chrome谷歌浏览器历史版本下载网站

使用selenium模块的时候&#xff0c;从官网下载的谷歌浏览器版本太高&#xff0c;驱动不支持&#xff0c;所以需要使用历史的谷歌浏览器版本 &#xff0c;这里备份一下以防找不到了。 驱动下载地址&#xff1a;https://registry.npmmirror.com/binary.html?pathchromedriver 文…...

备考2025年AMC8竞赛:吃透2000-2024年600道真题(免费赠送真题)

我们继续来随机看五道AMC8的真题和解析&#xff0c;根据实践经验&#xff0c;对于想了解或者加AMC8美国数学竞赛的孩子来说&#xff0c;吃透AMC8历年真题是备考最科学、最有效的方法之一。 即使不参加AMC8竞赛&#xff0c;吃透了历年真题600道和背后的知识体系&#xff0c;那么…...

考研复试C语言篇

第一章 概述 1.1什么是程序 为了让计算机执行某些操作或解决某个问题而编写的一系列有序指令的合集。 1.4C语言的特点 代码级别的跨平台&#xff1a;由于标准的存在&#xff0c;使得几乎同样的C代码可用于多种操作系统&#xff0c;也适用于多种机型。使允许直接访问物理地址…...

Docker架构深度解析:守护进程、客户端与存储驱动的协同作战(下)

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《Docker幻想曲&#xff1a;从零开始&#xff0c;征服容器宇宙》 &#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 四、命名空间和控制组 1、Linux命名空…...

【强化学习笔记一】初识强化学习(定义、应用、分类、性能指标、小车上山案例及代码)

文章目录 第1章 初识强化学习1.1 强化学习及其关键元素1.2 强化学习的应用1.3 强化学习的分类1.3.1 按任务分类1.3.2 按算法分类 1.4 强化学习算法的性能指标1.5 案例&#xff1a;基于Gym库的智能体/环境接口1.5.1 安装Gym库1.5.2 使用Gym库1.5.3 小车上山1.5.3.1 有限动作空间…...

安卓面试准备汇总

java相关 面试-java基础相关-CSDN博客 android 基础相关 安卓基础面试题-CSDN博客 kotlin相关 android pms,cms,wms相关知识 android fragmework层的知识 项目相关的...

C#+datax实现定时增量同步

要使用C#和DataX实现定时增量同步&#xff0c;你可以使用以下步骤&#xff1a; 1. 安装DataX&#xff1a;首先&#xff0c;确保你已经安装了DataX。你可以从DataX的官方仓库中获取最新版本。 2. 配置DataX 任务&#xff1a;创建一个DataX任务&#xff0c;定义源&#xff08;sou…...

VUE实现Provide的计算属性

通过此篇可以学到&#xff1a; 如何使用Providerinject进行“跨代”传值如何实现一个计算属性的Provider如何解决告警“injection "xxxxx" not found. ” 一、描述 目前需要创建一个计算属性传入Provide&#xff0c;并且能够被其他组件Inject 二、实现 父组件 .…...

Spring Schedule:Spring boot整合Spring Schedule实战讲解定时发送邮件的功能

&#x1f389;&#x1f389;欢迎光临&#xff0c;终于等到你啦&#x1f389;&#x1f389; &#x1f3c5;我是苏泽&#xff0c;一位对技术充满热情的探索者和分享者。&#x1f680;&#x1f680; &#x1f31f;持续更新的专栏《Spring 狂野之旅&#xff1a;从入门到入魔》 &a…...

Midjourney绘图欣赏系列(十)

Midjourney介绍 Midjourney 是生成式人工智能的一个很好的例子&#xff0c;它根据文本提示创建图像。它与 Dall-E 和 Stable Diffusion 一起成为最流行的 AI 艺术创作工具之一。与竞争对手不同&#xff0c;Midjourney 是自筹资金且闭源的&#xff0c;因此确切了解其幕后内容尚不…...

【C语言】人生重开模拟器

前言&#xff1a; 人生重开模拟器是前段时间非常火的一个小游戏&#xff0c;接下来我们将一起学习使用c语言写一个简易版的人生重开模拟器。 网页版游戏&#xff1a; 人生重开模拟器 (ytecn.com) 1.实现一个简化版的人生重开模拟器 &#xff08;1&#xff09; 游戏开始的时…...

船舶AIS监控网络-船位信息查询:实时查询船舶动态,服务于船舶安全航行管理、港口调度计划、物流、船代、货代。【AIS动态信息编写船舶轨迹】

文章目录 引言I 预备知识1.1 相关术语1.2 主要功能1.3 MongoDB和Es各自优势II 系统架构2.1 电子海图开源JavaScript包2.2 地图渲染库2.3 地图服务调用(天地图)2.4 在Elasticsearch(ES)中存储船舶轨迹数据III 数据同步方案3.1 基于 Binlog 实时同步3.2 数据迁移工具:Canal3.3…...

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

OpenLayers 分屏对比(地图联动)

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能&#xff0c;和卷帘图层不一样的是&#xff0c;分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题&#xff0c;前来答题。 每个人对刷题理解是不同&#xff0c;有的人是看了writeup就等于刷了&#xff0c;有的人是收藏了writeup就等于刷了&#xff0c;有的人是跟着writeup做了一遍就等于刷了&#xff0c;还有的人是独立思考做了一遍就等于刷了。…...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问&#xff1a;说说对 IP 数据报中 TTL 的理解&#xff1f;我们都知道&#xff0c;IP 数据报由首部和数据两部分组成&#xff0c;首部又分为两部分&#xff1a;固定部分和可变部分&#xff0c;共占 20 字节&#xff0c;而即将讨论的 TTL 就位于首…...

rnn判断string中第一次出现a的下标

# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题

分区配置 (ptab.json) img 属性介绍&#xff1a; img 属性指定分区存放的 image 名称&#xff0c;指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件&#xff0c;则以 proj_name:binary_name 格式指定文件名&#xff0c; proj_name 为工程 名&…...

Golang——9、反射和文件操作

反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一&#xff1a;使用Read()读取文件2.3、方式二&#xff1a;bufio读取文件2.4、方式三&#xff1a;os.ReadFile读取2.5、写…...

PydanticAI快速入门示例

参考链接&#xff1a;https://ai.pydantic.dev/#why-use-pydanticai 示例代码 from pydantic_ai import Agent from pydantic_ai.models.openai import OpenAIModel from pydantic_ai.providers.openai import OpenAIProvider# 配置使用阿里云通义千问模型 model OpenAIMode…...