Python进阶--正则表达式

目录

1.  基础匹配

2. 元字符匹配


1.  基础匹配

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

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

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

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

# 要导入re模块
import re

s = '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 re

s = '1hello Python ,you should study hard'

res = re.match('hello',s)
print(res) #None
# 不能以为是s里面有hello就能匹配
# match是跟s的头部匹配,头部不匹配就不继续往后看

import re

s = '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 re

s = 'hello Python ,you can say hello'

res1 = re.findall('hello',s)
print(res1) # ['hello', 'hello']

res2 = re.findall('tell',s)
print(res2) # []

2. 元字符匹配

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

import re

s = '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')]

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

爱心曲线公式大全

local r a*((math.sin(angle) * math.sqrt(math.abs(math.cos(angle)))) / (math.sin(angle) 1.4142) - 2 * math.sin(angle) 2) local x r * math.cos(angle) -- 计算对应的x值 local z r * math.sin(angle) 1.5*a - --曲线公式绘画 local function generateParabola()…

【异常记录Vue_20241006】使用TagsView后控制台报错

报错截图 报错原因 未将TagsView所依赖的组件permission组件注册到store中&#xff0c;导致TagsView组件在找permission.routes时没找到 解决方法&#xff1a;store注册相应组件

应用界面编写(十四)

一. 介绍QT 接下来我们会在Qt Creater来进行界面的编写&#xff0c;并且在荔枝派中运行。那么我们有必要了解一下Qt到底是什么呢&#xff1f;它又为什么可以在荔枝派中运行呢&#xff1f; QT是一个跨平台的应用程序和用户界面框架&#xff0c;用于开发具有图形界面的软件。而…

【AI知识点】残差网络(ResNet,Residual Networks)

残差网络&#xff08;ResNet&#xff0c;Residual Networks&#xff09; 是由微软研究院的何凯明等人在 2015 年提出的一种深度神经网络架构&#xff0c;在深度学习领域取得了巨大的成功。它通过引入残差连接&#xff08;Residual Connection&#xff09; 解决了深层神经网络中…

Linux--IO模型与高级IO重要概念

什么是IO&#xff1f; IO是指计算机系统与外部世界进行数据交换的过程。在计算机中&#xff0c;IO通常用于与外部设备通信&#xff0c;这些设备包括键盘、鼠标、打印机、显示器、网络等。通过IO操作&#xff0c;计算机系统可以接收来自外部设备的输入数据&#xff0c;也可以将…

CSS圆角

在制作网页的过程中&#xff0c;有时我们可能需要实现圆角的效果&#xff0c;以前的做法是通过切图&#xff08;将设计稿切成便于制作成页面的图片&#xff09;&#xff0c;使用多个背景图像来实现圆角。在 CSS3 出现之后就不需要这么麻烦了&#xff0c;CSS3 中提供了一系列属性…

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

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

jetlinks物联网平台学习5:dtu设备接入及温度报警场景联动

dtu设备接入及温度报警场景联动 1、平台端配置1、新建协议2、新建网络组件3、设备接入网关配置4、新增产品5、导入产品物模型6、新增设备7、场景联动配置7.1、触发规则7.2、触发条件7.3、执行动作 2、平台端验证场景联动 1、平台端配置 下载三个文件 https://hanta.yuque.com…

40条经典ChatGPT论文指令,圈定选题和进行论文构思

目录 1、用ChatGPT圈定选题范围2、用ChatGPT生成研究方法和思路3、用ChatGPT扩展论文观点和论证4、用ChatGPT辅助论文结构设计5、如何直接使用ChatGPT4o、o1、OpenAI Canvas6、OpenAI Canvas增强了啥&#xff1f;7、编程功能增强 &#x1f447; ChatGPT o1网页入口在文末&#…

如何让算法拥有“记忆”?一文读懂记忆化搜索

✨✨✨学习的道路很枯燥&#xff0c;希望我们能并肩走下来! 文章目录 目录 文章目录 前言 一 什么是记忆化搜索 二 相关题目练习 2.1 斐波那契数&#xff08;详解记忆化搜索&#xff09; ​编辑 解法一&#xff08;递归&#xff09;&#xff1a; 解法二&#xff08;记…

免费高可用软件

高可用软件是指那些能够提供高可用性、高可靠性的软件&#xff0c;它们在各种应用场景下都能确保系统的稳定运行。以下是四款免费的高可用软件&#xff0c;它们在不同领域都表现出色&#xff0c;能够满足各种高可用性需求。 一、PanguHA PanguHA是一款专为Windows平台设计的双…

【吊打面试官系列-MySQL面试题】试述视图的优点?

大家好&#xff0c;我是锋哥。今天分享关于【试述视图的优点&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; 试述视图的优点&#xff1f; (1) 视图能够简化用户的操作 (2) 视图使用户能以多种角度看待同一数据&#xff1b; (3) 视图为数据库提供了一定程度的…

一、机器学习算法与实践_06迭代法和KMeans、线性回归、逻辑回归算法笔记

0 迭代法 迭代法不仅是机器学习、深度学习的核心&#xff0c;也是整个人工智能领域的重要概念&#xff0c;其对于算法的设计和实现至关重要 0.1 适合场景 对于不能一次搞定的问题&#xff0c;将其分成多步来解决&#xff0c;逐步逼近解决方案 0.2 典型应用 KMeans 聚类算法…

基于SpringBoot博物馆游客预约系统【附源码】

基于SpringBoot博物馆游客预约系统 效果如下&#xff1a; 主页面 注册界面 展品信息界面 论坛交流界面 后台登陆界面 后台主界面 参观预约界面 留言板界面 研究背景 随着现代社会的快速发展和人们生活水平的提高&#xff0c;文化生活需求也在日益增加。博物馆作为传承文化、…

关于CSS 案例_新闻内容展示

新闻要求 标题:居中加粗发布日期: 右对齐分割线: 提示, 可以使用 hr 标签正文/段落: 左侧缩进插图: 居中显示 展示效果 审核过不了&#xff0c;内容没填大家将就着看吧。 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset&qu…

Java | Leetcode Java题解之第461题汉明距离

题目&#xff1a; 题解&#xff1a; class Solution {public int hammingDistance(int x, int y) {int s x ^ y, ret 0;while (s ! 0) {s & s - 1;ret;}return ret;} }

新款平行进口奔驰GLS450升级原厂AR实景导航人机交互行车记录仪等功能

平行进口的24款奔驰GLS450升级原厂中规导航主机通常具备以下功能&#xff1a; 人机交互系统&#xff1a;该导航主机配备了人机交互系统&#xff0c;可以通过触摸屏、旋钮或语音控制等方式与导航系统进行交互&#xff0c;方便驾驶者进行导航设置和操作。 实景AR导航&#xff1…

基于springboot+小程序的智慧物业平台管理系统(物业1)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 智慧物业平台管理系统按照操作主体分为管理员和用户。 1、管理员的功能包括报修管理、投诉管理管理、车位管理、车位订单管理、字典管理、房屋管理、公告管理、缴费管理、维修指派管理、…

03 Trace窗口3种过滤器

一、PreFilter &#xff1a;主要对报文进行过滤

EtherNet/IP 转 EtherNet/IP, EtherCAT/Ethernet/IP/Profinet/ModbusTCP协议互转工业串口网关

EtherCAT/Ethernet/IP/Profinet/ModbusTCP协议互转工业串口网关https://item.taobao.com/item.htm?ftt&id822721028899 协议转换通信网关 EtherNet/IP 转 EtherNet/IP GW系列型号 MS-GW22 概述 简介 MS-GW22 是 EtherNet/IP 和 EtherNet/IP 协议转换网关&#xff0c;…