全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Python正则表达式分组概念与用法详解

本文实例讲述了Python正则表达式分组概念与用法。分享给大家供大家参考,具体如下:

正则表达式分组

分组就是用一对圆括号“()”括起来的正则表达式,匹配出的内容就表示一个分组。从正则表达式的左边开始看,看到的第一个左括号“(”表示第一个分组,第二个表示第二个分组,依次类推,需要注意的是,有一个隐含的全局分组(就是0),就是整个正则表达式。

分完组以后,要想获得某个分组的内容,直接使用group(num)和groups()函数去直接提取就行。

例如:提取代码中的超链接中的文本

>>> s='<div><a href="https://support.google.com/chrome/?p=ui_hotword_search" rel="external nofollow" target="_blank">更多</a><p>dfsl</p></div>'
>>> print re.search(r'<a.*>(.*)</a>',s).group(1)
更多

或者

>>> print re.match(r'.*<a.*>(.*)</a>',s).group(1)
更多

按照上面的分组匹配以后,我们就可以拿到我们想拿到的字串,但是如果我们正则表达式中括号比较多,那我们在拿我们想要的字串时,要去挨个数我们想要的字串时第几个括号,这样会很麻烦,这个时候Python又引入了另一种分组,那就是命名分组,上面的叫无名分组。

命名分组

命名分组就是给具有默认分组编号的组另外再给一个别名。命名分组的语法格式如下:

(?P<name>正则表达式)#name是一个合法的标识符

如:提取字符串中的ip地址

>>> s = "ip='230.192.168.78',version='1.0.0'"
>>> re.search(r"ip='(?P<ip>\d+\.\d+\.\d+\.\d+).*", s)
>>> res.group('ip')#通过命名分组引用分组
'230.192.168.78'

后向引用

正则表达式中,放在圆括号“()”中的表示是一个组。然后你可以对整个组使用一些正则操作,例如重复操作符。
要注意的是,只有圆括号”()”才能用于形成组。”“用于定义字符集。”{}”用于定义重复操作。
当用”()”定义了一个正则表达式组后,正则引擎则会把被匹配的组按照顺序编号,存入缓存。这样我们想在后面对已经匹配过的内容进行引用时,就可以用”\数字”的方式或者是通过命名分组进行”(?P=name)“进行引用。\1表示引用第一个分组,\2引用第二个分组,以此类推,\n引用第n个组。而\0则引用整个被匹配的正则表达式本身。这些引用都必须是在正则表达式中才有效,用于匹配一些重复的字符串。
如:

#通过命名分组进行后向引用
>>> re.search(r'(?P<name>go)\s+(?P=name)\s+(?P=name)', 'go go go').group('name')
'go'
#通过默认分组编号进行后向引用
>>> re.search(r'(go)\s+\1\s+\1', 'go go go').group()
'go go go'

交换字符串的位置

>>> s = 'abc.xyz'
>>> re.sub(r'(.*)\.(.*)', r'\2.\1', s)
'xyz.abc'

前向肯定断言、后向肯定断言

前向肯定断言的语法:

(?=pattern)

后向肯定断言的语法:

(?<=pattern)

需要注意的是,如果在匹配的过程中,需要同时用到前向肯定断言和后向肯定断言,那么必须将后向肯定断言写在正则语句的前面,前向肯定断言写在正则语句的后面,表示后向肯定模式之后,前行肯定模式之前。
如:获取c语言代码中的注释内容

>>> s1='''char *a="hello world"; char b='c'; /* this is comment */ int c=1; /* t
his is multiline comment */'''
>>> re.findall( r'(?<=/\*).+?(?=\*/)' , s1 ,re.M|re.S)
[' this is comment ', ' this is multiline comment ']

(?<=/*)这个是后向肯定断言,表示“/*”之后。(?=*/)这个为前向肯定断言,表示“*/”之前,这两合并起来就是一个区间了,所以后向肯定断言放在前向肯定断言前面。

前向否定断言、后向否定断言

前向否定断言语法:

(?!pattern)

后向否定断言语法:

(?<!pattern)

前向否定和后向否定实例:

#提取不是.txt结尾的文件
>>> f1 = 'aaa.txt'
>>> re.findall(r'.*\..*$(?<!txt$)',f1)
[]
#提取不以数字开头的文件
>>> re.findall(r'^(?!\d+).*','1txt.txt')
[]
#提取不以数字开头不以py结尾的文件
>>> re.findall(r'^(?!\d+).+?\..*$(?<!py$)','test.py')
[]
>>> re.findall(r'^(?!\d+).+?\..*$(?<!py$)','test.txt')
['test.txt']

PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:

JavaScript正则表达式在线测试工具:
http://tools./regex/javascript

正则表达式在线生成工具:
http://tools./regex/create_reg

更多关于Python相关内容可查看本站专题:《Python正则表达式用法总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。


# Python  # 正则表达式  # 分组  # Python re正则表达式元字符分组()用法分享  # python使用正则表达式替换匹配成功的组并输出替换的次数  # python使用正则表达式替换匹配成功的组  # python里使用正则表达式的组嵌套实例详解  # 详解python里使用正则表达式的分组命名方式  # 在python中使用正则表达式查找可嵌套字符串组  # Python正则表达式中的量词符号与组问题小结  # 后向  # 前向  # 的是  # 第一个  # 第二个  # 是一个  # 不以  # 放在  # 字串  # 写在  # 需要注意  # 进阶  # 操作技巧  # 几个  # 是在  # 相关内容  # 可以用  # 要去  # 以此类推 


相关文章: 如何通过万网虚拟主机快速搭建网站?  python的本地网站制作,如何创建本地站点?  如何用景安虚拟主机手机版绑定域名建站?  建站之星CMS建站配置指南:模板选择与SEO优化技巧  网站网页制作专业公司,怎样制作自己的网页?  C#如何使用XPathNavigator高效查询XML  制作企业网站建设方案,怎样建设一个公司网站?  招贴海报怎么做,什么是海报招贴?  企业微网站怎么做,公司网站和公众号有什么区别?  青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?  如何用狗爹虚拟主机快速搭建网站?  Python如何创建带属性的XML节点  如何快速配置高效服务器建站软件?  小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化  建站之星如何一键生成手机站?  建站主机数据库如何配置才能提升网站性能?  电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?  实例解析angularjs的filter过滤器  北京建设网站制作公司,北京古代建筑博物馆预约官网?  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  制作宣传网站的软件,小红书可以宣传网站吗?  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  表情包在线制作网站免费,表情包怎么弄?  广州顶尖建站服务:企业官网建设与SEO优化一体化方案  做企业网站制作流程,企业网站制作基本流程有哪些?  建站之星北京办公室:智能建站系统与小程序生成方案解析  广州网站建站公司选择指南:建站流程与SEO优化关键词解析  如何快速建站并高效导出源代码?  全景视频制作网站有哪些,全景图怎么做成网页?  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  香港服务器建站指南:免备案优势与SEO优化技巧全解析  建站DNS解析失败?如何正确配置域名服务器?  广州建站公司哪家好?十大优质服务商推荐  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  深圳网站制作案例,网页的相关名词有哪些?  南平网站制作公司,2025年南平市事业单位报名时间?  清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?  内部网站制作流程,如何建立公司内部网站?  如何规划企业建站流程的关键步骤?  沈阳制作网站公司排名,沈阳装饰协会官方网站?  攀枝花网站建设,攀枝花营业执照网上怎么年审?  建站之星Pro快速搭建教程:模板选择与功能配置指南  建站之星后台管理如何实现高效配置?  定制建站如何定义?其核心优势是什么?  建站主机如何安装配置?新手必看操作指南  宝塔新建站点为何无法访问?如何排查?  天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?  相亲简历制作网站推荐大全,新相亲大会主持人小萍萍资料?  如何在阿里云虚拟主机上快速搭建个人网站?  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一) 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。