(一)正则表达式中的(…)

  用于匹配括号内的任何正则表达式,并且指明组的开始和结束位置;可以在执行匹配之后检索组中的内容,并且可以在可以在字符串中使用\number来进行进一步的匹配,如下所述。当需要匹配字符’(‘或者’)’时,可以使用(和) ,或者[(]和[)]来实现。

  以上便是Python3.6官方文档对于(…)表达式的解说,该括号表达式用于定义一个group,一个正则表达式中可以有多个括号表达式,这就意味着匹配结果中可能有多个group,我们可以用group函数来定位到特定的group结果。

(二)match.group([group1,…])

  返回匹配结果中一个或多个group.如果该group函数仅仅有一个参数,那么结果就是单个字符串;如果有多个参数,结果是每一个参数对应的group项的元组.如果没有参数,那么参数group1默认为0(返回的结果就是整个匹配结果).如果参数值是0,那么返回整个匹配结果的字符串;如果它是[1..99]之间的数字,则返回的是与对应括号组匹配的字符串(第一节中已经解释了,正则表达式中的一个括号对应着一个group).如果组号为负或大于模式中定义的组数,则会引发IndexError异常。如果某个group包含在匹配模式中但没有找到相应的匹配,那么对应的结果就是None.如果一个group是匹配模式中的一部分,并且匹配到了多次,那么最后一次匹配结果将返回.

import re#定义了两个group,因为包含两个括号
m = re.match("(\w+) (\w+)", "Isaac Newton, physicist")#group(0)就是匹配的整个结果
print(m.group(0))                           #输出结果为Isaac Newton#group(1)是第一个group的值
print(m.group(1))                           #输出结果为Isaac#group(2)是第二个group的值
print(m.group(2))                           #输出结果为Newton#groups返回所有的group,以元组的形式
print(m.groups())                           #输出结果为('Isaac','Newton')           

(三)findall(pattern, string, flag)

  返回字符串中模式的所有非重叠匹配,结果以一个字符串list返回.字符串匹配过程是从左到右开始扫描,并且匹配结果按顺序返回,如果该模式组存在一个或多个匹配,则返回匹配该组的一个列表;如果模式中有多个group,则返回的是一个元组的列表,元组中的元素依次对应各组的匹配结果.空的匹配包含在结果中除非它们开始了一个新的匹配过程。

  可以看出,findall实质上也是一个group的匹配过程.其结果就是groups匹配结果的列表.

import reif __name__ == '__main__':#用于测试的字符串str = "<h1>liuwei</h1><a href='www.baidu.com'></a><h1>zhangbin</h1><a href='www.love.com'></a>"regex = re.compile("<h1>(.+?)</h1><a(.+?)></a>")      #定义了两个group,两个括号res = regex.search(str)                               #search用于找到第一个满足匹配的子串,并返回                      print("group1:%s" %res.group(1))                      #输出结果为liuwei          print("group2:%s" %res.group(2))                      #输出结果为href='www.baidu.com'res1 = regex.findall(str)                             #findall输出所有满足的匹配print("res1:%s" %res1)print(res1[0])                                        #输出结果为('liuwei', 'www.baidu.com')print(res1[1])                                        #输出结果为('zhangbin, 'www.love.com')

python正则表达式中group相关推荐

  1. 详解Python正则表达式中group与groups的用法

    在Python中,正则表达式的group和groups方法是非常有用的函数,用于处理匹配结果的分组信息. group方法是re.MatchObject类中的一个函数,用于返回匹配对象的整个匹配结果或特 ...

  2. Python正则表达式中的‘r‘

    Python正则表达式中的'r' 最近遇到一个非常困惑的地方,那就是在使用Python中的正则表达式的时候,正则表达式前面的'r'带来的影响.自己最开始的困惑点在于,'r'的作用是声明为原始字符串,那 ...

  3. python正则表达式中的转义字符_python 正则表达式之转义字符

    最近在整理python相关的知识,使用python对网站进行爬取数据的时候,需要使用到转义字符,之前对转义字符理解一直比较模糊,并且在python中还有一个叫原生字符r.所以通过网上调查资料对该内容进 ...

  4. Python正则表达式中的转义问题\\\\\\\\\????(焯!什么鬼)

    这次写这篇博客是一个容易把自己绕糊涂的问题 就是转义问题啦(开练开练) 转义字符和原生字符串: 首先讲一下一些基础的概念 转义字符和原生字符串的区别 '\n'代表换行,是一个转义字符 r'\n' 代表 ...

  5. python正则表达式中的r与转义字符_左手用R右手Python系列13——字符串处理与正则表达式...

    原标题:左手用R右手Python系列13--字符串处理与正则表达式 杜雨,EasyCharts团队成员,R语言中文社区专栏作者,兴趣方向为:Excel商务图表,R语言数据可视化,地理信息数据可视化.个 ...

  6. python正则表达式中的转义字符_详解python中正则表达式的反斜线的转义功能

    最近深入研读了正则表达式的一本经典著作,对于在python中使用正则表达式时使用反斜线转义功能时有些心得,特与大家分享. 核心思想:在python中使用正则表达式时要切记反斜线具有两层转义功能,如果你 ...

  7. Python正则表达式中的贪心模式和非贪心模式

    声明:最近发现有人利用我在百度云盘里免费分享的127课Python视频盈利,并声称获得我的授权.在此,我声明,文末百度云盘里的Python视频是免费的,不会授权给任何人或机构进行销售.如果再发现有人卖 ...

  8. Python正则表达式中使用findall函数遇到括号嵌套的小坑

    1.findall函数 我们都知道括号在正则表达式中起到了分类的作用,但当定义好一个自己的字符匹配模式(含有括号)后,使用findall()函数会遇到一点小坑. 具体来说就是: 可以发现是否将整个正则 ...

  9. python正则表达式中原生字符r的作用

    r的作用 >>> mm = "c:\\a\\b\\c" >>> mm 'c:\\a\\b\\c' >>> print(mm) ...

最新文章

  1. 常用Linux Shell命令组合
  2. C++是不是类型安全的?
  3. 双链表的基本操作---插入,删除,交,并,相邻元素的交换,不相邻元素的交换...
  4. java学习(45):无参无返回
  5. leetcode115 不同的子序列
  6. c语言xc比较大小写,XCTestAPI文档.docx
  7. javascript-练习-数组数据存li中
  8. 类名引用static变量好处
  9. jQuery的DataTables插件的使用方法[转]
  10. 如何进行多云环境中的数据管理?
  11. java程序设计比赛心得体会_对Java程序设计的感想.doc
  12. ios::ate和ios::app在C++文件中的区别
  13. 怎么完全卸载赛门铁克_赛门铁克专用卸载工具
  14. 5分钟学会图片优化 之 七伤拳
  15. 树莓派Ubuntu21.04 罗技键盘和鼠标重启后失效问题解决
  16. 数论概论 第三章 勾股数组与单位圆
  17. 今日恐慌与贪婪指数为10 恐慌程度有所上升
  18. Log4j2配置SMTP邮件实现邮件发送
  19. html5支持.9.png,javascript-当Alpha透明时,HTML5 Canvas转换为PNG会将所有通道归零
  20. idea 撤销和前进快捷键

热门文章

  1. Oracle corrupt block(坏块) 详解
  2. Xamarin中使用DatePickerDialog的相关问题
  3. JavaScript 设计模式核⼼原理与应⽤实践 之 结构型设计模式
  4. android gridview 按钮事件处理,Android TV gridview 的按键事件响应巧变 事件分发机制...
  5. Android IPC机制(二)用Messenger进行进程间通信
  6. JavaScript自学笔记(1)---表单验证,let和const,JSON文件
  7. JAVA Websocket 使用@PathParam无法获取参数
  8. JDK1.8源码下载及获取、导入IDEA阅读、配置JDK源码
  9. C#LeetCode刷题之#374-猜数字大小(Guess Number Higher or Lower)
  10. C#LeetCode刷题之#326-3的幂(Power of Three)