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

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())#匹配的字符串

语法:变量=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 语法 案例 正则表达式 正则表达式又称规则表达式&#xff0c;是使用单个字符串来描述、匹配某个句法规则的字符串…...

【LeetCode每日一题】——219.存在重复元素II

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时间频度】九【代码实现】十【提交结果】 一【题目类别】 哈希表 二【题目难度】 简单 三【题目编号】 219.存在重复元素II 四【题目描述】 给你一个…...

篇六:适配器模式:让不兼容变兼容

篇六&#xff1a;“适配器模式&#xff1a;让不兼容变兼容” 开始本篇文章之前先推荐一个好用的学习工具&#xff0c;AIRIght&#xff0c;借助于AI助手工具&#xff0c;学习事半功倍。欢迎访问&#xff1a;http://airight.fun/ 另外有2本不错的关于设计模式的资料&#xff0c…...

【云原生】Docker-compose中所有模块学习

compose模块 模板文件是使用 Compose 的核心&#xff0c;涉及到的指令关键字也比较多。但大家不用担心&#xff0c;这里面大部分指令跟 docker run 相关参数的含义都是类似的。 默认的模板文件名称为 docker-compose.yml&#xff0c;格式为 YAML 格式。 version: "3&quo…...

广义积分练习

前置知识 无穷限积分瑕积分 练习 计算 ∫ 0 ∞ 1 x ( 1 x ) d x \int_0^{\infty}\dfrac{1}{\sqrt x(1x)}dx ∫0∞​x ​(1x)1​dx 解&#xff1a; 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树形表格,左边勾选,右边显示选中的数据-功能(如动图)

功能如图 功能需求 表格树形表格勾选数据&#xff0c;右边显示对应勾选的数据内容&#xff0c;选中客户&#xff0c;自动勾选所有的店铺(子级)&#xff0c;选中其中一个店铺&#xff0c;自动勾选上客户(父级)&#xff0c;同时会存在只有客户&#xff08;下面没有子级的情况&am…...

Android数字价格变化的动画效果的简单实现

原理&#xff1a;使用ValueAnimator属性动画类实现&#xff0c;它通过值的改变手动设置对象的属性值来实现动画效果。直接贴代码&#xff1a; public static void doNumberAnim(TextView tvPrice, float startNumber, float endNumber) {ValueAnimator animator ValueAnimato…...

Win10无法投影关闭3D模式

Win10不小心开启了3D模式&#xff0c;插上投影仪就一闪一闪的&#xff0c;无法正投影 解决办法&#xff1a; 1. 打开注册表工具regedit&#xff0c;删除以下注册表&#xff0c;重启电脑 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Configurat…...

FFmpeg 编码详细流程

介绍 FFmpeg的 libavcodec 模块完成音视频多媒体的编解码模块。FFmpeg 本身不具有音视频编码的功能和底层能力&#xff0c;只是对各类第三方的编码器API 进行封装调用。老版本的 FFmpeg 将avcodec_encode_video2()作为视频的解码函数 API&#xff0c;将avcodec_encode_audio2(…...

05如何做微服务架构设计

一句话导读 微服务架构设计方法有&#xff1a;领域驱动设计DDD&#xff08;Domain-Driven-Design&#xff09;、12因素应用&#xff08;12-Factor App&#xff09;、事件驱动架构EDA&#xff08;Event-Driven Architecture&#xff09;等等&#xff0c;但是他们都必须遵守微服务…...

安卓开发问题记录:需要常量表达式

问题原因 写代码过程中爆出这个错误&#xff1a;需要常量表达式&#xff0c;定位到switch。 解决方法&#xff1a;把switch case&#xff0c;改成if else 错误源代码&#xff1a; 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运行环境&#xff0c;并支持多种平台&#xff0c;让用户可以在很短时间内在本地或云环境中搭建一套docker主机集群的工具。 使用docker-machine命令&#xff0c;可以启动、审查、停止、重启托管的docker 也可以…...

【力扣周赛】第357场周赛

【力扣周赛】第357场周赛 2810. 故障键盘题目描述解题思路 2811. 判断是否能拆分数组题目描述解题思路 2810. 故障键盘 题目描述 描述&#xff1a;你的笔记本键盘存在故障&#xff0c;每当你在上面输入字符 ‘i’ 时&#xff0c;它会反转你所写的字符串。而输入其他字符则可以…...

多线程案例(4)-线程池

文章目录 多线程案例四四、线程池 大家好&#xff0c;我是晓星航。今天为大家带来的是 多线程案例-线程池 相关的讲解&#xff01;&#x1f600; 多线程案例四 四、线程池 线程池是什么 虽然创建线程 / 销毁线程 的开销 想象这么一个场景&#xff1a; 在学校附近新开了一家…...

【数据结构OJ题】轮转数组

原题链接&#xff1a;https://leetcode.cn/problems/rotate-array/ 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 1. 方法一&#xff1a;暴力求解&#xff0c;将数组的第一个元素用临时变量tmp存起来&#xff0c;再将数组其他元素往右挪动一步&…...

现代C++中的从头开始深度学习:【4/8】梯度下降

一、说明 在本系列中&#xff0c;我们将学习如何仅使用普通和现代C编写必须知道的深度学习算法&#xff0c;例如卷积、反向传播、激活函数、优化器、深度神经网络等。 在这个故事中&#xff0c;我们将通过引入梯度下降算法来介绍数据中 2D 卷积核的拟合。我们将使用卷积和上一个…...

Yolov5缺陷检测/目标检测 Jetson nx部署Triton server

使用AI目标检测进行缺陷检测时&#xff0c;部署到Jetson上即小巧算力还高&#xff0c;将训练好的模型转为tensorRT再部署到Jetson 上供http或GRPC调用。1 Jetson nx 刷机 找个ubuntu 系统NVIDIA官网下载安装Jetson 的sdkmanager一步步刷机即可。 本文刷的是JetPack 5.1, 其中包…...

MobaXterm 中文乱码, 及pojie

中文解决方法&#xff1a; 把“连字”去掉&#xff01; MobaXterm网页&#xff0c;可以生成一个授权文件Custom.mxtpro。放在安装目录就可以了 MobaXterm Keygen (husbin.top)http://b70.husbin.top:5000/...

java: 程序包sun.misc不存在

启动失败&#xff0c;rebuild时也报错&#xff1a;java: 程序包sun.misc不存在 问题出在JDK版本上&#xff0c;这个包在JDK9的时候已经被弃用了&#xff0c;这里改回JDK8即可 步骤如下&#xff1a;...

WSL2Linux 子系统(五)

WLS2Linux 子系统编译 Android 上一篇文章中讲解 《WLS2Linux 子系统迁移/恢复》&#xff0c;从C盘迁移到D盘。既可以防止C盘爆红&#xff0c;又可以释放磁盘空间。有更大存储空间意味大有可为&#xff0c;比如说编译Android系统。本文则以开源 firefly Android10代码为例简单…...

java 企业工程管理系统软件源码 自主研发 工程行业适用 em

​ 工程项目管理软件&#xff08;工程项目管理系统&#xff09;对建设工程项目管理组织建设、项目策划决策、规划设计、施工建设到竣工交付、总结评估、运维运营&#xff0c;全过程、全方位的对项目进行综合管理 工程项目各模块及其功能点清单 一、系统管理 1、数据字典&#…...

IPO观察丨困于门店扩张的KK集团,还能讲好增长故事吗?

KK集团发起了其IPO之路上的第三次冲击。 近日&#xff0c;KK集团更新了招股书&#xff0c;继续推进港交所上市进程&#xff0c;此前两次上市搁置后终于有了新动向。从更新内容来看&#xff0c;KK集团招股书披露了公司截至2023年一季度的最新业绩&#xff0c;交出一份不错的“成…...

【iOS】RunLoop

前言-什么是RunLoop&#xff1f; 什么是RunLoop? 跑圈&#xff1f;字面上理解确实是这样的。 Apple官方文档这样解释RunLoop RunLoop是与线程息息相关的基本结构的一部分。RunLoop是一个调度任务和处理任务的事件循环。RunLoop的目的是为了在有工作的时候让线程忙起来&#…...

数据包传输方式:单播、多播、广播、组播、泛播

数据包传输方式 单播、多播、广播、组播、泛播 网络中假设X代表所有的机器&#xff0c;Y代表X中的一部分机器&#xff0c;Z代表一组机器&#xff0c;1代表一台机器&#xff0c;那么 1&#xff1a;1 那就是单播&#xff1b;1&#xff1a;Y 那就是多播&#xff1b;1&#xff1…...

WebRTC基础知识

文章目录 基础概念NAT (Network Address Translation) 打洞STUN&#xff08;Session Traversal Utilities for NAT&#xff09;基于STUN协议的DDoS反射攻击 # TODO TURN&#xff08;Traversal Using Relays around NAT&#xff09;ICE&#xff08;Interactive Connectivity Est…...

积累常见的有针对性的python面试题---python面试题001

1.考点列表的.remove方法的参数是传入的对应的元素的值,而不是下标 然后再看remove这里,注意这个是,删除写的那个值,比如这里写3,就是删除3, 而不是下标. remove不是下标删除,而是内容删除. 2.元组操作,元组不支持修改,某个下标的内容 可以问他如何修改元组的某个元素 3.…...

在springboot使用websocket时mapper无法注入

直接上代码 package cn.ujoined.combined.utils;import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.stereotype.Componen…...

前端加密与解密的几种方式

1.base64加密方式 1. base64是什么&#xff1f; Base64&#xff0c;顾名思义&#xff0c;就是包括小写字母a-z、大写字母A-Z、数字0-9、符号""、"/"一共64个字符的字符集&#xff0c;&#xff08;另加一个“”&#xff0c;实际是65个字符&#xff0c;至于…...

详解Spring Bean的生命周期

详解Spring Bean的生命周期 Spring Bean的生命周期包括以下阶段&#xff1a; 1. 实例化Bean 对于BeanFactory容器&#xff0c;当客户向容器请求一个尚未初始化的bean时&#xff0c;或初始化bean的时候需要注入另一个尚未初始化的依赖时&#xff0c;容器就会调用createBean进…...

天津网站制作软件/开通网站需要多少钱

1.环境配置教程 环境变量、安装版、配置版 2.编写启动tomcat的批处理文件 3.改变端口 4.虚拟目录 转载于:https://www.cnblogs.com/bdqczhl/p/5929741.html...

网站权重6了该则么做优化方案/电视剧排行榜

本节书摘来自异步社区《Python 3程序开发指南&#xff08;第2版•修订版&#xff09;》一书中的第2章&#xff0c;第2.3节&#xff0c;作者[英]Mark Summerfield&#xff0c;王弘博&#xff0c;孙传庆 译&#xff0c;更多章节内容可以访问云栖社区“异步社区”公众号查看。 2.3…...

集团网站设计案例/宁波seo排名外包

一、内存与线程 1、内存结构 内存是计算机的重要部件之一,它是外存与CPU进行沟通的桥梁&#xff0c;计算机中所有程序的运行都在内存中进行&#xff0c;内存性能的强弱影响计算机整体发挥的水平。JVM的内存结构规定Java程序在执行时内存的申请、划分、使用、回收的管理策略&a…...

长春网站排名方案/2020做seo还有出路吗

1. 下载 nexus3 镜像 docker pull sonatype/nexus32. 新建挂载目录 这里将 nexus 的目录挂载到宿主机的/usr/soft/nexus-data文件夹下&#xff0c;并修改文件夹权限 mkdir -p /usr/soft/nexus-data && chmod 751 /usr/soft/nexus-data3. 创建容器 这里使用了宿主机…...

怎么找货源开网店/汕头最好的seo外包

js里和有什么区别 &#xff1a;运算符称作相等&#xff0c;用来检测两个操作数是否相等&#xff0c;这里的相等定义的非常宽松&#xff0c;可以允许进行类型转换 &#xff1a;用来检测两个操作数是否严格相等 1、对于string,number等基础类型&#xff0c;和是有区别的 不同类型…...

政府门户网站建设思路/周口网站seo

1、数据通信 它是计算机网络最基本和最重要的功能&#xff0c;用来实现联网计算机之间的各种信息的传输&#xff0c;并实现将分散在不同地理位置的计算机联系起来&#xff0c;进行统一的调配、控制和管理。比如&#xff0c;文件传输、电子邮件等应用&#xff0c;离开了计算机网…...