python之正则表达式
目录
正则表达式
python正则表达式方法
match
search
findall
finditer
compile
元字符匹配
元字符
量词
贪婪匹配和惰性匹配
正则表达式的group
语法
案例
正则表达式
- 正则表达式又称规则表达式,是使用单个字符串来描述、匹配某个句法规则的字符串,常被用来检索、替换那些符合某个模式的文本
- 正则表达式就是使用元字符进行排列组合用来匹配字符串,并通过规则去验证字符串是否匹配
- python正则表达式,使用re模块,并基于re模块的三个基础方法来做正则匹配(match、search、findall)
python正则表达式方法
使用时先导入re模块:import re
match
语法:变量=re.match(匹配规则,被匹配的字符串)
注意:从被匹配的开头进行匹配,匹配成功则返回匹配对象,匹配不成功则返回None
取得下标:变量.span()
取得匹配字符串:变量.group()
#导入re模块
import re
s="python language"
result=re.match("python",s)
print(result)#<re.Match object; span=(0, 6), match='python'>
print(result.span())#匹配的下标
print(result.group())#匹配的字符串
search
语法:变量=re.search(匹配规则,被匹配的字符串)
作用:搜索整个字符串,找出匹配的,从前向后,找到第一个后就停止不会继续向后,整个字符串都找不到,就返回None
取得下标:变量.span()
取得匹配字符串:变量.group()
#导入re模块
import re
s="i like python very much python yyds"
result=re.search("python",s)
print(result)#<re.Match object; span=(7, 13), match='python'>
print(result.span())
print(result.group())
findall
语法:列表对象=re.findall(匹配规则,被匹配的字符串)
作用:匹配整个字符串,找出全部匹配项,找不到则返回list:[]
#导入re模块
import re
s="i like python very much python yyds"
result=re.findall("python",s)
print(result)#['python', 'python']
finditer
语法:列表对象=re.findall(匹配规则,被匹配的字符串)
作用:匹配字符串中的所有内容,返回的是迭代器。
import re
result=re.finditer(r"\d+","我的电话号码是10086,女朋友电话号码是10010")
print(result)#<callable_iterator object at 0x0000029E66A093C0>
for i in result:print(i.group())
# 10086
# 10010
注意:
- 字符串r标记表示当前字符串是原始字符串,即内部的转义字符无效而是普通字符
- 从迭代器中拿到内容需要i.group()
compile
前言:正则表达式可能会被写的很长,此时复杂的正则可能有需要反复的使用,此时就可以把该正则提前加载好,后面用的时候直接拿来用就能够提高一点点效率
语法:预加载正则表达式=re.compile(r"需要编译的正则表达式")
import re
#预加载正则表达式
obj=re.compile(r"\d+")#很复杂的正则表达式
result=obj.findall("我的电话号码是10086,女朋友电话号码是10010")
print(result)#['10086', '10010']
元字符匹配
元字符
含义:具有固定含义的特殊符号
| 字符 | 功能 |
| .(点) | 匹配任意一个字符(除了\n),\.匹配自身 |
| [] | 匹配[]中列举任意一个字符 |
| [^……] | 匹配除了字符组中的所有字符 |
| \d | 匹配数字,即0-9 |
| \D | 匹配非数字 |
| \s | 匹配空白,即空格、tab键 |
| \S | 匹配非空白 |
| \w | 匹配大小写英文字母数字及下划线(单词字符) |
| \W | 匹配非单词字符 |
| \n | 匹配一个换行符 |
| \t | 匹配一个制表符 |
| ^ | 匹配字符串开头 |
| $ | 匹配字符串结尾 |
| | | 匹配左右任意1个表达式 |
| () | 匹配括号里的内容 |
注意:元字符仅能匹配单个字符
量词
含义:控制前面元字符出现的次数
| 量词 | 功能 |
| * | 匹配前一个规则字符重复出现了0到无数次 |
| + | 匹配前一个规则字符重复出现了1到无数次 |
| ? | 匹配前一个规则字符重复出现了0或1次 |
| {m} | 匹配前一个规则字符重复出现了m次 |
| {m,} | 匹配前一个规则字符重复出现了m到无数次 |
| {m,n} | 匹配前一个规则字符重复出现了m到n次 |
贪婪匹配和惰性匹配
| 匹配方式 | 功能 |
| .*(贪婪匹配) | 尽可能多的匹配字符 |
| .*?(惰性匹配) | 尽可能少的匹配字符 |
举例:玩吃鸡游戏,晚上一起上游戏,干嘛呢?打游戏啊
- 玩.*游戏:玩吃鸡游戏,晚上一起上游戏,干嘛呢?打游戏
- 玩.*?游戏: 玩吃鸡游戏
正则表达式的group
语法
给匹配到的分组正则命名:(?P<名字>正则表达式)
获取对应分组匹配的内容:match对象.group("名字")
案例
import re
s="""<div class='a'><span id='1'>周杰伦</span></dir><div class='b'><span id='2'>郭麒麟</span></dir><div class='c'><span id='3'>周星驰</span></dir><div class='d'><span id='4'>刘德华</span></dir>
"""
obj=re.compile(r"<div class='(?P<ch>.*?)'><span id='(?P<num>\d+)'>(?P<name>.*?)</span></dir>",re.S)
#注意这里的re.S代表让.也可以匹配换行符
result=obj.finditer(s)
for i in result:print(i.group("name"))# 周杰伦 郭麒麟 周星驰 刘德华
相关文章:
python之正则表达式
目录 正则表达式 python正则表达式方法 match search findall finditer compile 元字符匹配 元字符 量词 贪婪匹配和惰性匹配 正则表达式的group 语法 案例 正则表达式 正则表达式又称规则表达式,是使用单个字符串来描述、匹配某个句法规则的字符串…...
【LeetCode每日一题】——219.存在重复元素II
文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时间频度】九【代码实现】十【提交结果】 一【题目类别】 哈希表 二【题目难度】 简单 三【题目编号】 219.存在重复元素II 四【题目描述】 给你一个…...
篇六:适配器模式:让不兼容变兼容
篇六:“适配器模式:让不兼容变兼容” 开始本篇文章之前先推荐一个好用的学习工具,AIRIght,借助于AI助手工具,学习事半功倍。欢迎访问:http://airight.fun/ 另外有2本不错的关于设计模式的资料,…...
【云原生】Docker-compose中所有模块学习
compose模块 模板文件是使用 Compose 的核心,涉及到的指令关键字也比较多。但大家不用担心,这里面大部分指令跟 docker run 相关参数的含义都是类似的。 默认的模板文件名称为 docker-compose.yml,格式为 YAML 格式。 version: "3&quo…...
广义积分练习
前置知识 无穷限积分瑕积分 练习 计算 ∫ 0 ∞ 1 x ( 1 x ) d x \int_0^{\infty}\dfrac{1}{\sqrt x(1x)}dx ∫0∞x (1x)1dx 解: x 0 \qquad x0 x0为瑕点 \qquad 原式 lim a → 0 lim b → ∞ ∫ a b 1 x ( 1 x ) d x lim a → 0 lim …...
element-ui树形表格,左边勾选,右边显示选中的数据-功能(如动图)
功能如图 功能需求 表格树形表格勾选数据,右边显示对应勾选的数据内容,选中客户,自动勾选所有的店铺(子级),选中其中一个店铺,自动勾选上客户(父级),同时会存在只有客户(下面没有子级的情况&am…...
Android数字价格变化的动画效果的简单实现
原理:使用ValueAnimator属性动画类实现,它通过值的改变手动设置对象的属性值来实现动画效果。直接贴代码: public static void doNumberAnim(TextView tvPrice, float startNumber, float endNumber) {ValueAnimator animator ValueAnimato…...
Win10无法投影关闭3D模式
Win10不小心开启了3D模式,插上投影仪就一闪一闪的,无法正投影 解决办法: 1. 打开注册表工具regedit,删除以下注册表,重启电脑 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Configurat…...
FFmpeg 编码详细流程
介绍 FFmpeg的 libavcodec 模块完成音视频多媒体的编解码模块。FFmpeg 本身不具有音视频编码的功能和底层能力,只是对各类第三方的编码器API 进行封装调用。老版本的 FFmpeg 将avcodec_encode_video2()作为视频的解码函数 API,将avcodec_encode_audio2(…...
05如何做微服务架构设计
一句话导读 微服务架构设计方法有:领域驱动设计DDD(Domain-Driven-Design)、12因素应用(12-Factor App)、事件驱动架构EDA(Event-Driven Architecture)等等,但是他们都必须遵守微服务…...
安卓开发问题记录:需要常量表达式
问题原因 写代码过程中爆出这个错误:需要常量表达式,定位到switch。 解决方法:把switch case,改成if else 错误源代码: public void onClick(View view) {switch (view.getId()) {case R.id.iv_code:RxCaptcha.build(…...
回归预测 | MATLAB实现基于SVM-RFE-BP支持向量机递归特征消除特征选择算法结合BP神经网络的多输入单输出回归预测
回归预测 | MATLAB实现基于SVM-RFE-BP支持向量机递归特征消除特征选择算法结合BP神经网络的多输入单输出回归预测 目录 回归预测 | MATLAB实现基于SVM-RFE-BP支持向量机递归特征消除特征选择算法结合BP神经网络的多输入单输出回归预测预测效果基本介绍研究内容程序设计参考资料…...
配置root账户ssh免密登录并使用docker-machine构建docker服务
简介 Docker Machine是一种可以在多种平台上快速安装和维护docker运行环境,并支持多种平台,让用户可以在很短时间内在本地或云环境中搭建一套docker主机集群的工具。 使用docker-machine命令,可以启动、审查、停止、重启托管的docker 也可以…...
【力扣周赛】第357场周赛
【力扣周赛】第357场周赛 2810. 故障键盘题目描述解题思路 2811. 判断是否能拆分数组题目描述解题思路 2810. 故障键盘 题目描述 描述:你的笔记本键盘存在故障,每当你在上面输入字符 ‘i’ 时,它会反转你所写的字符串。而输入其他字符则可以…...
多线程案例(4)-线程池
文章目录 多线程案例四四、线程池 大家好,我是晓星航。今天为大家带来的是 多线程案例-线程池 相关的讲解!😀 多线程案例四 四、线程池 线程池是什么 虽然创建线程 / 销毁线程 的开销 想象这么一个场景: 在学校附近新开了一家…...
【数据结构OJ题】轮转数组
原题链接:https://leetcode.cn/problems/rotate-array/ 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 1. 方法一:暴力求解,将数组的第一个元素用临时变量tmp存起来,再将数组其他元素往右挪动一步&…...
现代C++中的从头开始深度学习:【4/8】梯度下降
一、说明 在本系列中,我们将学习如何仅使用普通和现代C编写必须知道的深度学习算法,例如卷积、反向传播、激活函数、优化器、深度神经网络等。 在这个故事中,我们将通过引入梯度下降算法来介绍数据中 2D 卷积核的拟合。我们将使用卷积和上一个…...
Yolov5缺陷检测/目标检测 Jetson nx部署Triton server
使用AI目标检测进行缺陷检测时,部署到Jetson上即小巧算力还高,将训练好的模型转为tensorRT再部署到Jetson 上供http或GRPC调用。1 Jetson nx 刷机 找个ubuntu 系统NVIDIA官网下载安装Jetson 的sdkmanager一步步刷机即可。 本文刷的是JetPack 5.1, 其中包…...
MobaXterm 中文乱码, 及pojie
中文解决方法: 把“连字”去掉! MobaXterm网页,可以生成一个授权文件Custom.mxtpro。放在安装目录就可以了 MobaXterm Keygen (husbin.top)http://b70.husbin.top:5000/...
java: 程序包sun.misc不存在
启动失败,rebuild时也报错:java: 程序包sun.misc不存在 问题出在JDK版本上,这个包在JDK9的时候已经被弃用了,这里改回JDK8即可 步骤如下:...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...
dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...
AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...
AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别
【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势…...
RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...
PostgreSQL——环境搭建
一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在࿰…...
Python 实现 Web 静态服务器(HTTP 协议)
目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1)下载安装包2)配置环境变量3)安装镜像4)node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1)使用 http-server2)详解 …...
WebRTC从入门到实践 - 零基础教程
WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC? WebRTC(Web Real-Time Communication)是一个支持网页浏览器进行实时语音…...
