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

Python3 正则表达式

Python3 正则表达式

正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。

Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。

re 模块使 Python 语言拥有全部的正则表达式功能。

compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有一系列方法用于正则表达式匹配和替换。

re 模块也提供了与这些方法功能完全一致的函数,这些函数使用一个模式字符串做为它们的第一个参数。

字符与字符类

特殊字符:.^$?+*{}|

以上特殊字符要想使用字面值,必须使用\进行转义

字符类

  • 包含在[]中的一个或者多个字符被称为字符类,字符类在匹配时如果没有指定量词则只会匹配其中的一个。
  • 字符类内可以指定范围,比如[a-zA-Z0-9]表示a到z,A到Z,0到9之间的任何一个字符
  • 左方括号后跟随一个,表示否定一个字符类,比如[0-9]表示可以匹配一个任意非数字的字符。
  • 字符类内部,除了\之外,其他特殊字符不再具备特殊意义,都表示字面值。放在第一个位置表示否定,放在其他位置表示本身,-放在中间表示范围,放在字符类中的第一个字符,则表示-本身。
  • 字符类内部可以使用速记法,比如\d \s \w

速记法

  • . 可以匹配除换行符之外的任何字符,如果有re.DOTALL标志,则匹配任意字符包括换行
  • \d 匹配一个Unicode数字,如果带re.ASCII,则匹配0-9
  • \D 匹配Unicode非数字
  • \s 匹配Unicode空白,如果带有re.ASCII,则匹配\t\n\r\f\v中的一个
  • \S 匹配Unicode非空白
  • \w 匹配Unicode单词字符,如果带有re.ascii,则匹配[a-zA-Z0-9_]中的一个
  • \W匹配Unicode非单子字符

量词

  • ? 匹配前面的字符0次或1次
    • 匹配前面的字符0次或多次
    • 匹配前面的字符1次或者多次
  • {m} 匹配前面表达式m次
  • {m,} 匹配前面表达式至少m次
  • {,n} 匹配前面的正则表达式最多n次
  • {m,n} 匹配前面的正则表达式至少m次,最多n次

注意点:
以上量词都是贪婪模式,会尽可能多的匹配,如果要改为非贪婪模式,通过在量词后面跟随一个?来实现

组与捕获

()的作用:

  • 捕获()中正则表达式的内容以备进一步利用处理,可以通过在左括号后面跟随?:来关闭这个括号的捕获功能
  • 将正则表达式的一部分内容进行组合,以便使用量词或者|反向引用前面()内捕获的内容:
  • 通过组号反向引用
  • 每一个没有使用?:的小括号都会分配一个组好,从1开始,从左到右递增,可以通过\i引用前面()内表

达式捕获的内容

  • 通过组名反向引用前面小括号内捕获的内容
    可以通过在左括号后面跟随?P,尖括号中放入组名来为一个组起一个别名,后面通过(?P=name)来引用 前面捕获的内容。如(? P\w+)\s+(?P=word)来匹配重复的单词。

注意点:
反向引用不能放在字符类[]中使用。

断言与标记

断言不会匹配任何文本,只是对断言所在的文本施加某些约束

常用断言:

  • \b匹配单词的边界,放在字符类[]中则表示backspace
  • \B匹配非单词边界,受ASCII标记影响
  • \A 在起始处匹配
  • ^ 在起始处匹配,如果有MULTILINE标志,则在每个换行符后匹配
  • \Z 在结尾处匹配
  • $ 在结尾处匹配,如果有MULTILINE标志,则在每个换行符前匹配
  • (?=e) 正前瞻
  • (?!e) 负前瞻
  • (?<=e) 正回顾
  • (?<!e) 负回顾

条件匹配

(?(id)yes_exp|no_exp):对应id的子表达式如果匹配到内容,则这里匹配yes_exp,否则匹配no_exp

正则表达式的标志

正则表达式的标志有两种使用方法

  • 通过给compile方法传入标志参数,多个标志使用|分割的方法,如re.compile(r"#[\da-f]{6}\b", re.IGNORECASE|re.MULTILINE)

  • 通过在正则表达式前面添加(?标志)的方法给正则表达式添加标志,如(?ms)#[\da-z]{6}\b
    常用的标志

  • re.A或者re.ASCII, 使\b \B \s \S \w \W \d \D都假定字符串为假定字符串为ASCII

  • re.I或者re.IGNORECASE 使正则表达式忽略大小写

  • re.M或者re.MULTILINE 多行匹配,使每个^在每个回车后,每个$在每个回车前匹配

  • re.S或者re.DOTALL 使.能匹配任意字符,包括回车

  • re.X或者re.VERBOSE 这样可以在正则表达式跨越多行,也可以添加注释,但是空白需要使用\s或者[ ]来表示,因为默认的空白不再解释。如:

re.compile(r"""<img\s +)   #标签的开始[^>]*?  #不是src的属性src=    #src属性的开始(?:(?P<quote>["']) #左引号(?P<image_name>[^\1>]+?)    #图片名字(?P=quote)  #右括号""",re.VERBOSE|re.IGNORECASE)

正则表达式处理字符串主要有四大功能

  • 匹配 查看一个字符串是否符合正则表达式的语法,一般返回true或者false
  • 获取 正则表达式来提取字符串中符合要求的文本
  • 替换 查找字符串中符合正则表达式的文本,并用相应的字符串替换
  • 分割 使用正则表达式对字符串进行分割。

Python中re模块使用正则表达式的两种方法

  • 使用re.compile(r, f)方法生成正则表达式对象,然后调用正则表达式对象的相应方法。这种做法的好处是生成正则对象之后可以多次使用。
  • re模块中对正则表达式对象的每个对象方法都有一个对应的模块方法,唯一不同的是传入的第一个参数是正则表达式字符串。此种方法适合于只使用一次的正则表达式。

相关文章:

Python3 正则表达式

Python3 正则表达式 正则表达式是一个特殊的字符序列&#xff0c;它能帮助你方便的检查一个字符串是否与某种模式匹配。 Python 自1.5版本起增加了re 模块&#xff0c;它提供 Perl 风格的正则表达式模式。 re 模块使 Python 语言拥有全部的正则表达式功能。 compile 函数根…...

Qt-基础

Qt1. 概念其他概念对话框模态对话框与非模态对话框事件事件拦截/过滤事件例子鼠标/屏幕使用界面功能qt-designer工具debug目录结构mainwindow控件窗口QMainWindow事件2. 项目概览QOBJECT tree 对象树3. 信号和槽信号函数关联自定义信号和槽函数自定义信号和槽函数1自定义信号和…...

ABB机器人将实时坐标发送给西门子PLC的具体方法示例

ABB机器人将实时坐标发送给西门子PLC的具体方法示例 本次以PROFINET通信为例进行说明,演示ABB机器人将实时坐标发送给西门子PLC的具体方法。 首先,要保证ABB机器人和PLC的信号地址分配已经完成,具体的内容可参考以下链接: S7-1200PLC与ABB机器人进行PROFINET通信的具体方法…...

反向传播与梯度下降详解

一,前向传播与反向传播 1.1,神经网络训练过程 神经网络训练过程是: 先通过随机参数“猜“一个结果(模型前向传播过程),这里称为预测结果 a a a;然后计算 a a a 与样本标签值...

Skywalking ui页面功能介绍

菜单栏 仪表盘&#xff1a;查看被监控服务的运行状态&#xff1b; 拓扑图&#xff1a;以拓扑图的方式展现服务之间的关系&#xff0c;并以此为入口查看相关信息&#xff1b; 追踪&#xff1a;以接口列表的方式展现&#xff0c;追踪接口内部调用过程&#xff1b; 性能剖析&am…...

哪里可以找到免费的 PDF 阅读编辑器?7 个免费 PDF 阅读编辑器分享

如果您曾经需要编辑 PDF&#xff0c;您可能会发现很难找到免费的 PDF 编辑器。幸运的是&#xff0c;您可以使用在线资源来编辑该文档&#xff0c;而无需为软件付费。 在本文中&#xff0c;我将介绍七种不同的 PDF 编辑器&#xff0c;它们至少可以让您免费编辑几个文件。我通过…...

使用梯度下降的线性回归(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 梯度下降法&#xff0c;是一种基于搜索的最优化方法&#xff0c;最用是最小化一个损失函数。梯度下降是迭代法的一种,可以用于求…...

在Ubuntu上设置MySQL可以远程登录

在Ubuntu上设置MySQL可以远程登录一.设置数据库二.设置防火墙由于Ubuntu查看修改MySQL不是很方便&#xff0c;想着在虚拟机安装的Windows系统或者局域网中的其他电脑上去查看Ubuntu系统上的数据库&#xff0c;这样省事一些&#xff0c;我电脑安装的数据库是MySQL8。一.设置数据…...

清风1.层次分析法

一.流程1.建立评价体系2.建立判断矩阵2.1 A-C-C矩阵从准则层对目标层的特征向量上看&#xff0c;花费的权重最大算术平均法求权重的结果为&#xff1a;0.26230.47440.05450.09850.1103几何平均法求权重的结果为&#xff1a;0.26360.47730.05310.09880.1072特征值法求权重的结果…...

「首席架构师推荐」免费数据可视化软件你喜欢哪一个?

数据可视化&#xff0c;是关于数据视觉表现形式的科学技术研究。其中&#xff0c;这种数据的视觉表现形式被定义为&#xff0c;一种以某种概要形式抽提出来的信息&#xff0c;包括相应信息单位的各种属性和变量。它是一个处于不断演变之中的概念&#xff0c;其边界在不断地扩大…...

深度学习术语解释:backbone、head、neck,etc

backbone&#xff1a;翻译为主干网络的意思&#xff0c;既然说是主干网络&#xff0c;就代表其是网络的一部分&#xff0c;那么是哪部分呢&#xff1f;这个主干网络大多时候指的是提取特征的网络&#xff0c;其作用就是提取图片中的信息&#xff0c;共后面的网络使用。这些网络…...

基础篇—CSS margin(外边距)解析

什么是CSS margin(外边距)? CSS margin(外边距)属性定义元素周围的空间。 属性描述margin简写属性。在一个声明中设置所有外边距属性。margin-bottom设置元素的下外边距。margin-left设置元素的左外边距。margin-right设置元素的右外边距。margin-top设置元素的上外边距。mar…...

ChatGPT或将引发新一轮失业潮?是真的吗?

最近&#xff0c;要说有什么热度不减的话题&#xff0c;那ChatGPT必然榜上有名。据悉是这是由美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型&#xff0c;它能够通过学习和理解人类的语言来进行对话&#xff0c;还能根据聊天的上下文进行互动&#xff0c;并协助人类…...

【Selenium学习】Selenium 中特殊元素操作

1.鼠标定位操作鼠标悬停&#xff0c;即当光标与其名称表示的元素重叠时触发的事件&#xff0c;在 Selenium 中将键盘鼠标操作封装在 Action Chains 类中。Action Chains 类的主要应用场景为单击鼠标、双击鼠标、鼠标拖曳等。部分常用的方法使用分类如下&#xff1a;• click(on…...

Spark相关的依赖冲突,后期持续更新总结

Spark相关的依赖冲突持续更新总结 Spark-Hive_2.11依赖报错 这个依赖是Spark开启支持hive SQL解析&#xff0c;其中2.11是Spark对应的Scala版本&#xff0c;如Spark2.4.7&#xff0c;对应的Scala版本是2.11.12&#xff1b;这个依赖会由于Spark内部调用的依赖guava的版本问题出…...

【每日一题Day122】LC1237找出给定方程的正整数解 | 双指针 二分查找

找出给定方程的正整数解【LC1237】 给你一个函数 f(x, y) 和一个目标结果 z&#xff0c;函数公式未知&#xff0c;请你计算方程 f(x,y) z 所有可能的正整数 数对 x 和 y。满足条件的结果数对可以按任意顺序返回。 尽管函数的具体式子未知&#xff0c;但它是单调递增函数&#…...

笔记本加装固态和内存条教程(超详细)

由于笔记本是几年前买的了&#xff0c;当时是4000&#xff0c;现在用起来感到卡顿&#xff0c;启动、运行速度特别慢&#xff0c;就决定换个固态硬盘&#xff0c;加个内存条&#xff0c;再给笔记本续命几年。先说一下加固态硬盘SSD的好处&#xff1a;1.启动快 2.读取延迟小 3.写…...

【Python】字典 - Dictionary

字典 - Dictionarykeys()values()items()get()获取文件中指定字符的个数进阶版&#xff1a;获取所有单词的频数进阶版&#xff1a;获取所有字符的频数函数内容keys()输出字典中的所有键values()输出字典中的所有值items()以元组的形式输出键值对get()获取字典中指定键的值 keys…...

LeetCode分类刷题----二叉树

二叉树1.二叉树的递归遍历144.二叉树的前序遍历145.二叉树的后序遍历94.二叉树的中序遍历2.二叉树的迭代遍历144.二叉树的前序遍历145.二叉树的后序遍历94.二叉树的中序遍历3.二叉树的层序遍历102.二叉树的层序遍历107.二叉树的层序遍历||199.二叉树的右视图637.二叉树的层平均…...

Zipkin : Golang 微服务全链路监控(三)

Zipkin : Golang 微服务全链路监控&#xff08;三&#xff09; Golang 微服务全链路监控实现 broker-service -> auth-service -> postgres dbzipkin 监控&#xff1a;需代码入侵 使用 zipkin 库的 serverMiddleware&#xff0c;其通过 Http 跟踪&#xff08;trace&am…...

5.3 BGP路由黑洞

5.2.3实验3:BGP路由黑洞 1. 实验目的 熟悉BGP路由黑洞的应用场景掌握BGP水平分割的配置方法2. 实验拓扑 实验拓扑如图5-3所示: 图5-3:BGP路由黑洞 3. 实验步骤 配置IP地址 R1的配置 <Huawei>syst...

STM32 DFU模式烧录代码

什么是DFU? dfu的本质是isp&#xff0c;usb接口的isp&#xff0c;在系统编程&#xff0c;进入isp的方式我们先了解 如下图 boot0为高电平 boot1为低电平即可进入isp模式。 熟悉的场景 在我们使用flymcu软件下载代码时&#xff0c;本质也是isp 串口接口的isp。 傻瓜使用方式…...

松下PLC通过fpwin上传写入MRTC模块方法

目录 PLC程序上传方法 加密模块使用 PLC程序上传方法 手动将PLC模式设置为prog模式查看PLC是否设置为禁止上传查询指示灯是否变蓝&#xff0c;变蓝则需要将PLC禁止上传功能取消。 3.当上述动作操作完成后&#xff0c;将PLC程序导入到PLC中。为了配合加密程序使用&#xff0c;…...

就业大山之下的网络安全:安逸的安服仔

从去年开始&#xff0c;各个互联网大厂就接二连三的放出了裁员消息&#xff0c;整个互联网行业好像都处于寒冬状态。微博、小米、滴滴、知乎、拼多多等在内的一大批互联网知名企业&#xff0c;也相继传出“人员优化”的消息。 除了国内市场的萧条&#xff0c;国外市场也是不容…...

JavaWeb3-线程的3种创建方式7种写法

目录 1.方式一&#xff1a;继承Thread&#xff08;2种写法&#xff09; 写法①&#xff08;常规&#xff09;&#xff1a; a.使用jconsole观察线程 b.启动线程——start方法 PS&#xff1a;&#xff08;常见面试题&#xff09;start 方法与 run 方法的区别&#xff1a; 写…...

驱动调试手段

文章目录 前言一、通过sysfs调试LCD查看电源:查看 pwm 信息查看管脚信息总结前言 本文记录在驱动中常用的调试手段 提示:以下是本篇文章正文内容,下面案例可供参考 一、通过sysfs 系统起来之后可以读取 sysfs 一些信息,来协助调试 示例: 调试LCD 输入如下命令 cat /…...

[RK3568 Android12] 音频及路由

1:概述(耳机 ,hdmiin ,板载喇叭) 在开发板上面,系统注册了三个音频输出通道,如下: [ 2.280612] ALSA device list: [ 2.280622] #0: rockchip,rk809-codec [ 2.280630] #1: ROCKCHIP,SPDIF [ 2.280638] #2: rockchip,hdmi console:/proc/asound # cat pcm …...

C++——C++11 第一篇

目录 统一的列表初始化 &#xff5b;&#xff5d;初始化 decltype ​编辑 nullptr STL中一些变化 右值引用和移动语义 左值引用和右值引用 总结 左值引用优缺点 右值引用&#xff08;将亡值&#xff09; 拷贝赋值和移动赋值 万能引用|完美转发 移动构造和移动赋值注意…...

Spring Data JPA 中 CrudRepository 和 JpaRepository 的区别

1 问题描述Spring Data JPA 中&#xff0c;CrudRepository 和 JpaRepository 有何区别&#xff1f;当我在网上找例子的时候&#xff0c;发现它们可以互相替换使用。它们有什么不同呢&#xff1f;为什么你习惯用其中的一个而不是另一个呢&#xff1f;2 CrudRepository 和 JpaRep…...

推荐几款好用的数据库管理工具

本文主要介绍几款常用的数据库管理软件&#xff08;客户端&#xff09;&#xff0c;包括开源/免费的、商用收费的&#xff0c;其中有一些是专用于 MySQL 数据库的&#xff0c;例如 MySQL Workbench、phpMyAdmin&#xff0c;有一些是支持多种 SQL、NoSQL 数据库的&#xff0c;例…...

龙华app网站制作/优化设计四年级上册数学答案

linux 系统则是由 cron (crond) 这个系统服务来控制的。Linux 系统上面原本就有非常多的计划性工作&#xff0c;因此这个系统服务是默认启动的。另 外, 由于使用者自己也可以设置计划任务&#xff0c;所以&#xff0c; Linux 系统也提供了使用者控制计划任务的命令 :crontab 命…...

公司做网站设计要注意/南京谷歌推广

上个月把VPS迁到budgetVM&#xff0c;终于不用再受digitalOcean的气了&#xff0c;入手很方便&#xff0c;重点是支持支付宝付款——paypal的界面真是不习惯&#xff0c;开通速度挺快的&#xff0c;1G的内存够我折腾一段时间了~&#xff0c;额外送了俩IP&#xff0c;过段时间再…...

重庆 新闻发布会/网站推广seo方法

Keras是一个高级神经网络的API&#xff0c;用python编写&#xff0c;能够在TensorFlow、CNTK或Theano上运行。Keras is a high-level neural networks API, written in Python and capable of running on top of TensorFlow, CNTK, or Theano. 它的开发重点是实现快速实验。It …...

wordpress 缺少父主题/搜索自媒体平台

NEW关注Tech逆向思维视频号最新视频→【最骇人的5起自动驾驶“杀人”事故】来源&#xff5c;机器人大讲堂文&#xff5c;Robospeak十万块多米诺骨牌倒下是个啥场面&#xff1f;等等&#xff0c;十万块&#xff1f;那得搭多久啊&#xff1f;这工程量可是相当巨大了&#xff0c;普…...

电商专业网站建设的毕业设计/北京seo优化推广

技术解决&#xff1a;&#xff08;即设计阶段&#xff0c;包括系统设计&#xff0c;详细设计等&#xff09; 目的&#xff1a;“技术解决”的目的在于开发、设计和实现满足需求的解决方案。解决方案的设计和实现等都围绕产品、产品构件和与过程相关的产品&#xff08;可能是其中…...

白玉网站建设/公司做网站一般多少钱

目录 1.foreach元素的属性 2.collection属性值的三种情况 3.代码示例 3.1 collection属性值为List(Array等同): 3.2 collection属性值类型为Map: 1.foreach元素的属性 collection: foreach的对象,作为入参,对象为list、array时&#xff0c;collection属性值分别默认用&quo…...