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即可 步骤如下:...
使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
Vue记事本应用实现教程
文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...
大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...
抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...
ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...
MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)
macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 🍺 最新版brew安装慢到怀疑人生?别怕,教你轻松起飞! 最近Homebrew更新至最新版,每次执行 brew 命令时都会自动从官方地址 https://formulae.…...
华为OD机试-最短木板长度-二分法(A卷,100分)
此题是一个最大化最小值的典型例题, 因为搜索范围是有界的,上界最大木板长度补充的全部木料长度,下界最小木板长度; 即left0,right10^6; 我们可以设置一个候选值x(mid),将木板的长度全部都补充到x,如果成功…...
