首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

第11.16节 Python正则元字符“()”(小括号)与组(group)匹配模式

  • 23-09-22 18:30
  • 2870
  • 9838
blog.csdn.net

一、 什么是组
关于组匹配模式,Python官网上说得比较简单,也没有这个名词,只有组这个名词,老猿查了比较多的资料和做了相关测试之后才理解。

组匹配模式,就是在匹配的正则表达式中使用小括号“()”括起来的任意一个合法的匹配模式串,左括号标记组的起点,右括号标记组的终点,即组匹配模式定义为:

(组匹配模式串)

其中组匹配模式串是整个正则表达式的一个子匹配模式。在一个正则表达式内可以定义多个组,每个组都有一个顺序分配的序号(组还可以命名),其中组0为整个正则表达式,组1为第一个括号,组2为第二个括号,依次类推顺序分配…,最多99个组号。其中组0为所有正则表达式都默认的就是整个正则表达式,不论正则表达式是否使用组匹配模式。

在《第11.3节 Python正则表达式搜索支持函数search、match、fullmatch、findall、finditer》介绍的这些搜索函数,其返回值都是一个匹配对象,匹配对象中存储的就是搜索结果,搜索结果保存在匹配对象的组属性中,使用“匹配对象.group(组序号)”、“匹配对象.groups()”等方式可以访问,这个匹配对象的组及其序号就是与正则表达式中的组一一对应。

之所以称为组,老猿认为有如下原因:

  1. 这种标识的组在整个匹配模式表达式在组后面的串中可以通过组名或组序号来引用;
  2. 其与搜索文本的匹配结果可以通过匹配对象的group(组序号)等方式来访问;
  3. 可以在组内定义类似《第11.2节 Python 正则表达式支持函数概览》中搜索函数中的搜索标记参数的搜索控制符,且搜索控制符的作用域只对该组有影响。

在《第11.3节 Python正则表达式搜索支持函数search、match、fullmatch、findall、finditer》介绍的这些搜索函数,其返回值都是一个匹配对象,匹配对象中存储的就是搜索结果,搜索结果保存在匹配对象的组属性中,使用“匹配对象.group(组序号)”、“匹配对象.groups()”等方式可以访问。

二、 案例

  1. 定义2个组:
>>> pattern='

(.*)

([0-9]{1,3})

' >>> str='

LaoYuanPython

28

' >>> m=re.search(pattern,str) >>> m.groups() ('LaoYuanPython', '28') >>> m.group(0) '

LaoYuanPython

28

' >>> m.group(1) 'LaoYuanPython' >>> m.group(2) '28' >>>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  1. 组允许嵌套,如组A内可以嵌套组B,则嵌套的B组其组的序号在A的序号后面,但在A后面组的序号前面。如:
>>>pattern='

(.*(P.?thon))

([0-9]{1,3})

' >>> str='

LaoYuanPython

28

' >>> m=re.search(pattern,str) >>> m.groups() ('LaoYuanPython', 'Python', '28') >>> m.group(1) 'LaoYuanPython' >>> m.group(2) 'Python'
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

老猿Python,跟老猿学Python!
博客地址:http://iyenn.com/index/link?url=https://blog.csdn.net/LaoYuanPython

请大家多多支持,点赞、评论和加关注!谢谢!

文章知识点与官方知识档案匹配,可进一步学习相关知识
Python入门技能树首页概览333596 人正在系统学习中
老猿Python
微信公众号
专注Python相关语言、图像音视频处理、AI
注:本文转载自blog.csdn.net的LaoYuanPython的文章"https://blog.csdn.net/LaoYuanPython/article/details/99877066"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top