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

Python进阶--正则表达式

目录

1.  基础匹配

2. 元字符匹配


1.  基础匹配

        正则表达式,又称规则表达式(Regular Expression),是使用单个字符串来描述、匹配某个句法规则的字符串,常被用来检索、替换那些符合某个模式(规则)的文本。

        简单来说,正则表达式就是使用字符串定义规则,并通过规则去验证字符串是否匹配。

        比如,验证一个字符串是否是符合条件的电子邮箱地址,只需要配置好正则规则,即可匹配任意邮箱。比如通过正则规则: (^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$)  即可匹配一个字符串是否是标准邮箱格式。但如果不使用正则,使用if else来对字符串做判断就非常困难了。

        Python正则表达式,使用re模块,并基于re模块中三个基础方法来做正则匹配。分别是:matchsearchfindall 三个基础方法

# 要导入re模块
import res = 'hello Python ,you should study hard'res = re.match('hello',s)
print(res) # <re.Match object; span=(0, 5), match='hello'>
# 可以通过span方法看到匹配的下标范围
print(res.span()) # (0,5)
# 通过group方法可以看到匹配的内容
print(res.group()) # hello
import res = '1hello Python ,you should study hard'res = re.match('hello',s)
print(res) #None
# 不能以为是s里面有hello就能匹配
# match是跟s的头部匹配,头部不匹配就不继续往后看

import res = 'hello Python ,you can say hello'res1 = re.search('hello',s)
print(res1) # <re.Match object; span=(0, 5), match='hello'>res2 = re.search('tell',s)
print(res2) # None

import res = 'hello Python ,you can say hello'res1 = re.findall('hello',s)
print(res1) # ['hello', 'hello']res2 = re.findall('tell',s)
print(res2) # []

2. 元字符匹配

        正则最强大的功能在于元字符匹配规则。

import res = 'hello Python 123456@163.com'# 字符串的r标记,表示当前字符串是原始字符串
# 即内部的转义字符无效,而是普通字符
res1 = re.findall(r'\d', s)
print(res1) # ['1', '2', '3', '4', '5', '6', '1', '6', '3']res2 = re.findall(r'[a-zA-Z]',s)
print(res2)
# ['h', 'e', 'l', 'l', 'o', 'P', 'y', 't', 'h', 'o', 'n', 'c', 'o', 'm']

import re
str = "c5d252dD"
# 设置匹配规则:只能是字母或数字,且长度限制在6~10位
r = '^[0-9a-zA-Z]{6,10}$'
print(re.findall(r,str)) # ['c5d252dD']
# 返回结果不为空,说明符合条件
import re
str = "03254265"
# 设置匹配规则:要求纯数字,长度5-11,第一位不为0
# 第一个设置[1,9],说明第一位数字不为0
# 第二个设置[0,9],说明内容必须是纯数字
# 第三个设置{4,10},因为我们已经设置了第一位的范围,所以剩余长度就是4-10
# ^表示从头开始找,$表示找到尾
r = '^[1,9][0,9]{4,10}$'
print(re.findall(r,str)) # []
# 返回结果为空,说明不符合条件
import re
# 匹配邮箱地址,只允许qq、163、gmail这三种邮箱地址
# [\w-]表示匹配单词字符和-
# +表示匹配的字符出现1到无数次
# (\.[\w-]+)* 匹配零个或多个以点(.)开头后跟一个或多个单词字符
# @ 用于分隔用户名和域名
# (qq|163|gmail)匹配“qq”、“163”或“gmail”中的任意一个
r=r'(^[\w-]+(\.[\w-]+)*@(qq|163|gmail)(\.[\w-]+)+$)'
s ='a.b.c.d.e.f.g@qq.com.a.z.c.d.e'
# 对于findall,如果r内部用了()进行分组
# 那么findall会把每一个满足内部规则的内容返回
# 因此我们要在最外面再加上一个(),用来找到满足内部所有规则的结果
print(re.findall(r,s))
# [('a.b.c.d.e.f.g@qq.com.a.z.c.d.e', '.g', 'qq', '.e')]

相关文章:

Python进阶--正则表达式

目录 1. 基础匹配 2. 元字符匹配 1. 基础匹配 正则表达式&#xff0c;又称规则表达式&#xff08;Regular Expression&#xff09;&#xff0c;是使用单个字符串来描述、匹配某个句法规则的字符串&#xff0c;常被用来检索、替换那些符合某个模式&#xff08;规则&#xff…...

富格林:发现潜在欺诈安全交易

富格林指出&#xff0c;在全球经济不确定性加剧的背景下&#xff0c;黄金的避险优势再次吸引了投资者的关注。尤其是在今年&#xff0c;随着多种因素的变化&#xff0c;金价的走势引发了市场的广泛讨论。但事实上黄金与其他投资品类相似&#xff0c;也存在潜在的欺诈套路导致我…...

Linux复习--Linux服务管理类(SSH服务、DHCP+FTP、DNS服务、Apache服务、Nginx服务、HTTP状态码)

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 一、SSH服务 1、问题引出 哪些设置能够提升SSH远程管理的安全等级&#xff1f; 2、SSH的登录验证方式-口令登录 3、SSH的登录验证方式-密钥登录 4、…...

如何用大模型来提升学习效率?

自从2022年底ChatGPT横空出世以来&#xff0c;在过去的十几个月里&#xff0c;生成式人工智能的浪潮席卷并改变着各行各业。 2023年一月&#xff0c;在线课程供应商Study.com曾向1000名18岁以上的学生发起的一项调查显示&#xff0c;当时就已经有超过89%的学生使用ChatGPT来完…...

SQL进阶技巧:如何优雅求解指标累计去重问题?

目录 0 需求概述 1 数据准备 2 问题分析 3 小结 0 需求概述 近期公司开发某项学习功能,改功能有很多学习内容(如java,C,python等方向),每天都会有众多学习用户学习某一项或者多项学习内容。产生数据如下表: 产生数据如下表: 日期 内容 学习用户 2022…...

大数据毕业设计选题推荐-国产电影数据分析-Python数据可视化-Hive-Hadoop-Spark

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…...

Linux:无法为立即文档创建临时文件: 设备上没有空间

虚拟机磁盘空间不足解决记录 1、问题描述2、问题解决 1、问题描述 在命令行输入命令按Tab键时出现如下报错&#xff1a; 很明显&#xff0c;设备上没有空间&#xff0c;即磁盘空间不足。通过命令查看具体情况如下&#xff1a; df -h2、问题解决 首先想到的是虚拟机扩容。关机虚…...

【SQL】掌握SQL查询技巧:数据筛选与限制

目录 1. DISTINCT&#xff1a;避免重复记录1.1 示意图1.2 使用场景 2. LIMIT&#xff1a;控制查询结果的数量2.1 示意图2.2 使用场景 3. OFFSET&#xff1a;跳过前几行3.1 示意图3.2 使用场景 4. WHERE子句&#xff1a;精细控制数据过滤4.1 示意图4.2 运算符详细说明4.3 基本条…...

大学生社团活动系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;学生管理&#xff0c;社长管理&#xff0c;社团分类管理&#xff0c;社团信息管理&#xff0c;社团加入管理&#xff0c;社团活动管理&#xff0c;轮播图信息 微信端账号功能包括&#xff1a;系统首页…...

codetop标签双指针题目大全解析(三),双指针刷穿地心!!!!!

复习比学习更重要&#xff0c;更需要投入时间&#xff0c;更需要花费精力 1.字符串的排列2.找出字符串中第一个匹配的下标3.最大连续1的个数II4.数组中的山脉5.移除元素6.两个数组的交集II7.有序数组的平方8.删除有序数组中的重复项II9.寻找重复数10.水果成篮 1.字符串的排列 …...

HarmonyOS应用六之应用程序进阶一

目录&#xff1a; 1、UIAbility的冷启动和UIAbility热启动2、静态资源和动态资源的访问3、页面跳转3.1、页面返回跳转 4、HAR的ArkUI组件、接口、资源&#xff0c;供其他应用或当前应用的其他模块引用4.1、导出HAR的ArkUI组件4.2、引用HAR的ArkUI组件 5、循环渲染6、状态管理最…...

vue开发中变量第一次双向绑定无效,界面并没有变化,第二次则又好了。

这个问题出现的太频繁了,基本大部分用户都遇到这个情况。大部分是弹框的情况。代码如下: <el-dialog:visible.sync="isShowCode" @close="closeCode()"><div class="u4259f"><edite-edite-code isNoShowClose="true"…...

C++基础(8)——string的相关面试题

目录 1.字符串转成整数 2.字符串相加 3.高精度加法模板&#xff08;acwing&#xff09; 4.验证回文串 1.字符串转成整数 题目&#xff1a;将一个字符串转换成一个整数&#xff0c;要求不能使用字符串转换整数的库函数。数值为0或者字符串不是一个合法的数值则返回0。输入的…...

【Docker】06-DockerCompose

1. Docker compose 2. Docker Compose部署项目 docker-compose.yml version: "3.8"services:mysql:image: mysqlcontainer_name: mysqlports:- "3307:3306"environment:TZ: Asia/ShanghaiMYSQL_ROOT_PASSWORD: 123volumes:- "/root/docker/mysql/…...

代码随想录训练营Day27 | 77. 组合 | 216.组合总和III | 17.电话号码的字母组合

学习文档&#xff1a;代码随想录 (programmercarl.com) 视频链接&#xff1a;代码随想录算法公开课 | 最强算法公开课 | 代码随想录 (programmercarl.com) Leetcode 77. 组合 题目描述 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以…...

Linux文件重定向文件缓冲区

目录 一、C文件接口 二、系统文件I/O 2.1认识系统文件I/O 2.2系统文件I/O 2.3系统调用和库函数 2.4open( )的返回值--文件描述符 2.5访问文件的本质 三、文件重定向 3.1认识文件重定向 3.2文件重定向的本质 3.3在shell中添加重定向功能 3.4stdout和stderr 3.5如何理…...

训练贪吃蛇ai的后续记录

发现可以结合遗传算法的思路&#xff0c;产生更好的效果。 即每训练一段时间&#xff0c;就停下来测试一下新模型的效果。如果效果优于记录中最好的&#xff0c;则继续导入该模型并训练。重复几次&#xff0c;效果可能更好。 例如&#xff0c;昨晚我便通过唯一一个在十次测试中…...

WPF 手撸插件 八 操作数据库一

1、本文将使用SqlSugar创建Sqlite数据库&#xff0c;进行入门的增删改查等操作。擦&#xff0c;咋写着写着凌乱起来了。 SqlSugar官方文档&#xff1a;简单示例&#xff0c;1分钟入门 - SqlSugar 5x - .NET果糖网 2、环境SqlSugar V5.0版本需要.Net Framework 4.6 &#xff0…...

代数结构基础 - 离散数学系列(八)

目录 1. 群&#xff08;Group&#xff09; 群的定义 群的示例 2. 环&#xff08;Ring&#xff09; 环的定义 环的示例 3. 域&#xff08;Field&#xff09; 域的定义 域的示例 域在密码学中的应用 4. 实际应用场景 1. 对称性与加密 2. 误差检测与纠正 3. 数据编码…...

函数的arguments为什么不是数组?如何转化为数组?

因为arguments本身并不能调用数组方法&#xff0c;它是一个另外一种对象类型&#xff0c;只不过属性从0开始排&#xff0c;依次为0 1 2…最后还有callee和length属性&#xff0c;我们也把这样的对象成为类数组。 常见的类数组还有&#xff1a; 1.用getElementsByTagName/Class…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式&#xff0c;可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法

深入浅出&#xff1a;JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中&#xff0c;随机数的生成看似简单&#xff0c;却隐藏着许多玄机。无论是生成密码、加密密钥&#xff0c;还是创建安全令牌&#xff0c;随机数的质量直接关系到系统的安全性。Jav…...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

GO协程(Goroutine)问题总结

在使用Go语言来编写代码时&#xff0c;遇到的一些问题总结一下 [参考文档]&#xff1a;https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现&#xff1a; 今天在看到这个教程的时候&#xff0c;在自己的电…...

Caliper 负载(Workload)详细解析

Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...

Kafka主题运维全指南:从基础配置到故障处理

#作者&#xff1a;张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1&#xff1a;主题删除失败。常见错误2&#xff1a;__consumer_offsets占用太多的磁盘。 主题日常管理 …...

渗透实战PortSwigger Labs指南:自定义标签XSS和SVG XSS利用

阻止除自定义标签之外的所有标签 先输入一些标签测试&#xff0c;说是全部标签都被禁了 除了自定义的 自定义<my-tag onmouseoveralert(xss)> <my-tag idx onfocusalert(document.cookie) tabindex1> onfocus 当元素获得焦点时&#xff08;如通过点击或键盘导航&…...

Linux入门(十五)安装java安装tomcat安装dotnet安装mysql

安装java yum install java-17-openjdk-devel查找安装地址 update-alternatives --config java设置环境变量 vi /etc/profile #在文档后面追加 JAVA_HOME"通过查找安装地址命令显示的路径" #注意一定要加$PATH不然路径就只剩下新加的路径了&#xff0c;系统很多命…...

scan_mode设计原则

scan_mode设计原则 在进行mtp controller设计时&#xff0c;基本功能设计完成后&#xff0c;需要设计scan_mode设计。 1、在进行scan_mode设计时&#xff0c;需要保证mtp处于standby模式&#xff0c;不会有擦写、编程动作。 2、只需要固定mtp datasheet说明的接口即可&#xf…...

MySQL 数据库深度剖析:事务、SQL 优化、索引与 Buffer Pool

在当今数据驱动的时代&#xff0c;数据库作为数据存储与管理的核心&#xff0c;其性能与可靠性至关重要。MySQL 作为一款广泛使用的开源数据库&#xff0c;在众多应用场景中发挥着关键作用。在这篇博客中&#xff0c;我将围绕 MySQL 数据库的核心知识展开&#xff0c;涵盖事务及…...