中正则表达式详解_python :正则表达式/re库 超级详细de注释解释

首先要解释,什么是正则表达式:

给定一串字符串,我们可以提取他的特征,把他抽象成一个类型。 下次遇到和这个字符串同类的字符串,我们只需要判断是否符合特征,就知道这个字符串是不是同类的。

举个例子:

每个地方都有邮政编码。

邮政编码就是按照一定的特征组织的。

一共六位数。

我们可以把它抽象成一个正则表达式,然后下次我们看到一个邮政编码,就判断他是否满足表达式,来判断他是否是邮政编码。

ad68b57acc229842142b09f60749cb63.png

1dc51042cf73c03d7e891822735ee533.png

row string:

r‘string’

re库详解:

re库是python自带的一个正则表达式库

781878e28dc3768164a7118bf349cb6e.png
# utf-8# time:2020/4/18 15:23# author:彭张智import rematch=re.search(r'[1-9]d{5}','BIT 100081')
# search 函数的第一个参数是正则表达式,第二个参数是要和正则表达式匹配的字符串 最后一个参数是开关参数
#返回值是一个match对象。
#match对象的内容是:<re.Match object; span=(4, 10), match='100081'>if match:print(match.group())match_list=re.findall(r'[1-9]d{5}','BIT 100081BIT 100081BIT 100081BIT 100081')if match_list:print(match_list)
#findall方法的参数和search 相同
#返回值是一个列表 ,返回要匹配的字符串的所有子串
#意思是:能够返回字符串中所有符合正则表达式的字符串
#可以看到结果:['100081', '100081', '100081', '100081']#split
print("*"*50)
s=re.split(r'[1-9]d{5}','BIT 100081BIT 100081BIT 100081BIT 100081')
# split 前面两个参数和之前一样,但是还有最大分割数maxsplit,也就是指,要split出多少个子串,剩下的最后一个会被放到列表里的最后一个位置
#返回结果是一个list, list 里面保存的是,不符合正则表达式的字符串
#结果是:['BIT ', 'BIT ', 'BIT ', 'BIT ', '']
if s:print(s)#试试maxsplit=1#结果里面的list只能找到一个被split出来的,剩下的内容会被放到list的最后位置r=re.split(r'[1-9]d{5}','BIT 100081BIT 100081BIT 100081BIT 100081',maxsplit=1)
if r:print(f'{r} n   lenth={len(r)}')#result=['BIT ', 'BIT 100081BIT 100081BIT 100081']#   lenth=2#finditer 搜索找到符合正则表达式的对象
# 返回一个迭代类型,每个迭代的元素对象是match
#参数和之前的 一样for it in re.finditer(r'[1-9]d{5}','BIT 100081BIT 100081BIT 100081BIT 100081'):if it:print(it.group())#result:#100081#100081#100081#100081#sub substitute 替换所有满足正则表达式的子串 返回替换后的字符串#参数:1.正则表达式,2.repl 替换匹配上的子串的字符串 3.string 要和正则表达式匹配的字符串#4.count 匹配的最大替换次数  5.flags 控制开关sustitute=re.sub(r'[1-9]d{5}',':substitute','BIT 100081BIT 100081BIT 100081BIT 100081',count=1)if sustitute:print(type(sustitute))#返回值是一个string 返回的结果就是原来那个字符串,只是替换了部分内容print(sustitute)#result:#<class 'str'>#BIT :substituteBIT 100081BIT 100081BIT 100081

代码里的注释详细解释了每个函数的用法。

aab2b06a316fe030774e15bb115eb384.png

compile 是将一个正则表达式编译成一个对象。

这个对象就包含了之前介绍的所有方法。

37b7b23dd1c374113d50e234bef0f3be.png

值得一提的是,这里的pattern 是原生字符串,并不是正则表达式。

当他经过编译成为一个对象,就是一个正则表达式了。

可以理解为:长得不一样,其实里面都一样。

match对象:


#match object:#是一次匹配之后的结果返回了匹配之后的信息m=re.search(r'[1-9]d{5}','BIT 100081BIT 100081BIT 100081BIT 100081')
if m:print(type(m)) #match 对象类型是:'re.Match'print(type(m.group()))# match 的group方法返回的是一个str  <class 'str'>print(m.group())#match对象的属性:# 1. string 返回待匹配的文本,就是输入的那个要和正则表达式匹配的stringprint(m.string)#2.  re 返回那个正则表达式 返回类型是正则表达式哦  re.compile('[1-9]d{5}')print(m.re)#3.pos position的意思,返回在哪个string搜索的开始位置print(m.pos)#4. endpos 返回搜索结束的位置print(m.endpos)#match 对象的四种方法:#1.group(0) 获得匹配的字符子串print(m.group())#2.satrt() 返回字符串在原始字符串的开始位置print(m.start())#3.end() 结束的位置咯print(m.end())#4. span()  返回一个元祖类型,返回start 位置和 end位置print(m.span())#贪婪匹配:
#对于一个字符串匹配正则表达式,默认返回这个字符串的最长子链 (包括自己
#加? 返回最下匹配t=re.search(r'PY.*N','PYANBNCNDN')if t:print(t.group())#默认返回最长的那个 就是原串#PYANBNCNDN#如果.后加上? 就会返回最短的t=re.search(r'PY.?*N','PYANBNCNDN')if t:print(t.group())#PYAN

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

打破多项世界记录  双11背后最大的力量是技术

双11是一次全球商业奇迹&#xff0c;同时也是一次技术奇迹。正是诸多世界顶尖的技术&#xff0c;助力双11一次又一次打破成交纪录&#xff0c;形成了独一无二的世界奇观。 阿里巴巴核心系统100%上云、每秒订单创建峰值54.4万笔、自研数据库POLARDB和OceanBase分别处理8700万、6…

阿里巴巴下一代云分析型数据库AnalyticDB入选Forrester Wave™ 云数仓评估报告 解读

前言 近期, 全球权威IT咨询机构Forrester发布"The Forrester WaveTM: CloudData Warehouse Q4 2018"研究报告&#xff0c;阿里巴巴分析型数据库(AnalyticDB)成功入选 &#xff01;AnalyticDB作为阿里巴巴自主研发的PB级实时云数据仓库&#xff0c;全面兼容MySQL协议以…

广州云栖大会:阿里云携手虎牙,首次落地直播行业边缘节点及云企业网服务

2018年11月22日&#xff0c;由阿里巴巴集团主办的广东省大数据开发者大会暨2018广东云栖大会在广州正式召开&#xff0c;其中以助力游戏企业畅游全球为主题的游戏云专场也在上午如期举办。 在游戏云专场中&#xff0c;阿里云高级商务专家李知明首先发言&#xff1a;边缘计算节点…

一行 Python 代码能实现这么多丧心病狂的功能?(代码可复制)

最近看知乎上有一篇名为《一行 Python 能实现什么丧心病狂的功能&#xff1f;》&#xff08;https://www.zhihu.com/question/37046157&#xff09;的帖子&#xff0c;点进去发现一行Python代码可以做这么多丧心病狂的功能&#xff01;整理了一下知乎上这篇文章的内容&#xff…

测试私有方法_史上最轻量!阿里开源了新型单元测试Mock工具

点击上方蓝色字体&#xff0c;选择“设为星标”回复”666“获取面试宝典TestableMock是基于源码和字节码增强的Java单元测试辅助工具&#xff0c;包含以下功能&#xff1a;访问被测类私有成员&#xff1a;使单元测试能直接调用和访问被测类的私有成员&#xff0c;解决私有成员初…

阿里云云效如何保障双11大型项目管理

每一年双11对阿里巴巴来说都是一个练兵场&#xff0c;一次更大规模技术创新、产品迭代、协同研发的练兵场。在2018年双11的“练兵场上”&#xff0c;阿里云云效——一站式企业协同研发平台支持着阿里巴巴众多部门、百个核心产品、千个垂直项目、几千人共同协作完成双十一大促的…

揭秘天猫双11背后:20万商家600万张海报,背后只有一个鹿班

还记得去年双11&#xff0c;秋裤厂商带着“五彩斑斓的黑”需求找设计师的故事吗&#xff1f; 现在&#xff0c;已经有超过20万客户把这个AI设计师鹿班带回家。 今年&#xff0c;鹿班除了为天猫淘宝平台提供服务之外&#xff0c;还通过阿里云全面为各行业客户输出AI设计能力。…

华为开源数据虚拟化引擎HetuEngine;全球超算500强:中国上榜数量增加;谷歌收购云计算公司CouldSimple ……...

关注并标星星CSDN云计算 速递、最新、绝对有料。这里有企业新动、这里有业界要闻&#xff0c;打起十二分精神&#xff0c;紧跟fashion你可以的&#xff01;每周两次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go华为V30 渲染图&#xff1a;取消3.5mm耳机孔&…

三位数除以两位数怎么算竖式_青岛版三年级上册数学5.6三位数除以一位数(最高位商后有余数)微课知识点精讲+练习...

微课视频第一课时微课视频第二课时同步练习1、列竖式计算下面各题3753 2382 5884 62352、一片树林3年共增加了537棵树&#xff0c;平均每年增长多少棵树&#xff1f;3、新华小学一年级共报名448人&#xff0c;如果一年级预开设8个班&#xff0c;那每个班有多少人…

阿里云移动研发平台EMAS,是如何连续5年安全护航双11的?

2014年11月11日&#xff0c;阿里巴巴天猫双十一购物狂欢节全天交易额571亿元&#xff1b;2015年交易额912.17亿元&#xff1b; 2016年1207亿 &#xff1b;2017年1682亿元&#xff1b;2018年2135亿。五年内交易量不断攀升&#xff0c;屡创新高&#xff0c;这让双十一成为了全球商…

从双十一看阿里云安全的“创世纪”——采访阿里云安全掌门人肖力有感

“神说要有光于是就有了光。”在双十一采访了阿里云安全掌门人肖力之后&#xff0c;忽然对这句话有了全新的认识。从肖力的介绍中我们不难体会到&#xff0c;与云计算相伴而生的阿里云安全诞生的必然性&#xff0c;云的先天基因赐予它“原生的神力”&#xff0c;从最初单纯的攻…

这段 Python 代码让程序员赚 300W,公司已确认!网友:神操作!

Python到底还能给人多少惊喜&#xff1f;笔者最近看到了这两天关于Python最热门的话题&#xff0c;关于《地产大佬潘石屹学Python的原因》&#xff0c;结果被这个回答惊到了&#xff1a;来源&#xff1a;知乎 https://www.zhihu.com/question/355880221笔者翻了翻那些回答&…

奉上一份云上数据安全保护指南

阿里云资深安全专家黄瑞瑞 本方案的目标是为用户提供从底层云平台数据安全到上层的云上环境保护&#xff0c;并标明各层次模块&#xff0c;让用户可以像建房子一样&#xff0c;一层层的搭建可信的在云上数据的安全保护。在各横向层次模块之外&#xff0c;云上数据安全也需要纵…

云数据库POLARDB优势解读系列文章之②——高性价比

现在做任何事情都要看投入产出比&#xff0c;对应到数据库上其实就是性价比。POLARDB作为一款阿里自研数据库&#xff0c;经常被问的问题是&#xff1a;性能怎么样&#xff1f;能不能支撑我的业务&#xff1f;价格贵不贵&#xff1f;很显然&#xff0c;在早期调研阶段&#xff…

38年后的今天,用数据回顾什么是女排精神?

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 朱小五责编 | 阿秃每当我们足篮打水一场空时&#xff0c;总会想起女排。38年前&#xff0c;1981年11月16日&#xff0c;中国队击败当时号称“东洋魔女“的日本女排&#xff0c;首次夺得世界冠军&#xff0c;这也是中国在三大…

阿里如何将“高峰前扩容、高峰后缩容”的梦想照进现实?

一、2017年我们做了什么&#xff1f; 记得早在2017年的时候&#xff0c;王坚博士就曾召大家就关于“IDC As a Computer”是否能做到&#xff0c;进行过激烈的讨论。而要做到此&#xff0c;必须要实现存储计算分离&#xff0c;分离后由调度对计算和存储资源进行独立自由调度。而…

阿里云异构计算团队亮相英伟达2018 GTC大会

1、首届云原生计算国际会议上&#xff0c;弹性计算研究员伯瑜介绍了基于虚拟化、容器化编排技术的云计算操作系统PouchContainer 首届云原生计算国际会议&#xff08;KubeCon CloudNativeCon&#xff0c;China&#xff0c;2018&#xff09;在上海举办&#xff0c;弹性计算研究…

发布国内首个无服务器容器服务,运维效率从未如此高效

近年来&#xff0c;随着越来越多的企业基于微服务架构构建自身核心业务平台后&#xff0c;微服务已获得越来越多技术人员的肯定&#xff0c;同时&#xff0c;微服务也承载着企业数字化转型的重任。但微服务架构的落地给企业的运维团队带来了不少的挑战&#xff0c;原有的运维方…

OPPO 正式发布 ColorOS 7,“轻”装上阵带来多项亮眼新功能……

今日OPPO举办了 ColorOS 7 发布会&#xff0c;正式发布了主打“轻快无边界”的ColorOS 7&#xff0c;以“轻”为核心构建了无边界设计 2.0&#xff0c;在UI、交互、动画、声效等方面进行了优化&#xff0c;围绕“快”阐述了ColorOS 7 在畅快使用、高效体验上所做的创新功能。 此…

ubuntu mysql5.6_ubuntu安装mysql5.6

安装mysql5.6在ubuntu上安装mysql5.6的版本1.添加mysql5.6的源sudo apt-get install software-properties-commonsudo add-apt-repository deb http://archive.ubuntu.com/ubuntu trusty universe2.安装mysql5.6sudo apt-getupdatesudo apt install mysql-server-5.6sudo apt i…