当前位置: 首页 > 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…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界&#xff1a;MCP协议与服务器的工作原理 MCP&#xff08;Model Context Protocol&#xff09;是一种创新的通信协议&#xff0c;旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天&#xff0c;MCP正成为连接AI与现实世界的重要桥梁。…...

音视频——I2S 协议详解

I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议&#xff0c;专门用于在数字音频设备之间传输数字音频数据。它由飞利浦&#xff08;Philips&#xff09;公司开发&#xff0c;以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验&#xff0c;我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育&#xff0c;这并非炒作&#xff0c;而是已经发生的巨大变革。教育机构和教育者不能忽视它&#xff0c;试图简单地禁止学生使…...

scikit-learn机器学习

# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

c# 局部函数 定义、功能与示例

C# 局部函数&#xff1a;定义、功能与示例 1. 定义与功能 局部函数&#xff08;Local Function&#xff09;是嵌套在另一个方法内部的私有方法&#xff0c;仅在包含它的方法内可见。 • 作用&#xff1a;封装仅用于当前方法的逻辑&#xff0c;避免污染类作用域&#xff0c;提升…...

[论文阅读]TrustRAG: Enhancing Robustness and Trustworthiness in RAG

TrustRAG: Enhancing Robustness and Trustworthiness in RAG [2501.00879] TrustRAG: Enhancing Robustness and Trustworthiness in Retrieval-Augmented Generation 代码&#xff1a;HuichiZhou/TrustRAG: Code for "TrustRAG: Enhancing Robustness and Trustworthin…...

全面解析数据库:从基础概念到前沿应用​

在数字化时代&#xff0c;数据已成为企业和社会发展的核心资产&#xff0c;而数据库作为存储、管理和处理数据的关键工具&#xff0c;在各个领域发挥着举足轻重的作用。从电商平台的商品信息管理&#xff0c;到社交网络的用户数据存储&#xff0c;再到金融行业的交易记录处理&a…...