1.Match对象简介

match对象通常是由正则表达式对象的match 方法,search 方法等经过匹配之后而产生。可以直接当做bool值使用,如果匹配则相当于True,

如果不匹配,则返回None,相当于False

#示例:
name='张三'
if re.match('张\w+',name):
print('{},你好!'.format(name))
# 张三,你好!

  

2.Match对象的方法们:

2.1 match.expand(template)

说明:该方法利用一个类似sub方式,将template字符串中指定的利用反斜杠标示的数字或组名替换为相应组中值。

m=re.match(r'(?P<first_name>\w+) (?P<last_name>\w+)','Eric Brown')
print(m.group(0))
# Eric Brown
print(m.group(1))
# Eric
print(m.group(2))
# Brown
print(m.expand(r'His name is \1 \2'))
# His name is Eric Brown
print(m.expand(r'His name is \g<1> \g<2>'))
# His name is Eric Brown
print(m.expand(r'His name is \g<first_name> \g<last_name>'))
# His name is Eric Brown

  

2.2 match.group([group1, ...])

几点说明:
1.如果组中组出的参数是一个0-99的单个数值,则返回一个字符串。
2.如果组中组出的参数0,则返回整个匹配的值。
3.如果组中组出的参数是负数或超出组的最大长度,则给出越界错误。
4.如果组中组出的参数是两个值,则给出由两个值分别对应的值的一个tuple。
print(m.group(1,2))
 ('Eric', 'Brown')
5.如果正则表达式中的一个组匹配了多个值,则相应的组只保存最后匹配的值。
6.如果正则表达式中的一个组没有匹配到值,则相应的组为None。

2.3  match.__getitem__(g)

该方法定义一个更加简单的就去访问match的中组,即:
 m[0]<==>m.group(0)

# 示例:
print(m[0])
# Eric Brown
print(m[1])
# Eric

  注意:不能使用多个值进行读取

2.4 match.groups(default=None)

以tuple的形式返回所有的子组中的内容:

print(m.groups())
# ('Eric', 'Brown')

  

2.5 match.groupdict(default=None)

以字典的方式返回所有的子组中的内容#

print(m.groupdict())
# {'first_name': 'Eric', 'last_name': 'Brown'}

  

2.6 match.start([group]),match.end([group])

返回正则表达式中的组匹配的子字符串在原字符串中的起始与结束位置,默认值为0示例:

print(m.start(),m.end())
# 0 10
print(m.start(1),m.end(1))
# 0 4
print(m.start(2),m.end(2))
# 5 10
print(m.string[m.start(2):m.end(2)])
# Brown 等价于 m.group(2) 等价于 m[2]

  如果正则表达式中的组没有匹配,则相应的开始与结束均为-1,如果正则表达式匹配到了一个空字符串,则m.start()与m.end()相等。

2.7 match.span([group])

返回一个(m.start(),m.end())的元组。

# 示例:

print(m.span())
# (0, 10) print(m.span(1))
# (0, 4)

  

2.8 match.pos

通过正则表达式对象传递值,表示正则表达式将从何处开始匹配

2.9 match.endpos

通过正则表达式对象传递值,表示正则表达式将从何处结束匹配

# 示例如下:

p=re.compile('\d+')

m=p.match('123456',2,4)

print(m[0])
# 34

  

2.10  match.lastindex

最后一个匹配到的组的序号。与正则表达式中的组有关,如果全部不匹配,则为None

m=re.match(r'(?P<first_name>\w+) (?P<last_name>\w+)','Eric Brown')

print(m.lastindex)
# 2

  

2.11 match.lastgroup

最后一个匹配到的组的名称。与正则表达式中的组有关。注意:如果匹配的组没有名字或才根本没有匹配,则返回None

print(m.lastgroup)
# last_name

  

2.12  match.string

通过search或match方法传递的参数,待匹配的字符串

print(m.string)
# Eric Brown

  

正文到此结束了

后面分析一下python学习路线图https://www.bilibili.com/video/BV1V741117Zt/

还有一些学习资料

链接:https://pan.baidu.com/s/1sMxwTn7P2lhvzvWRwBjFrQ

提取码:kt2v

链接容易被举报过期,如果失效了就在这里领取吧

python正则表达式详解之Match类及其方法的更多相关文章

  1. Python正则表达式详解——re库

    一.简介 1.1.相关链接 官方文档: Python2:https://docs.python.org/2/library/re.html Python3:https://docs.python.or ...

  2. Python正则表达式详解

    我用双手成就你的梦想 python正则表达式 ^ 匹配开始 $ 匹配行尾 . 匹配出换行符以外的任何单个字符,使用-m选项允许其匹配换行符也是如此 [...] 匹配括号内任何当个字符(也有或的意思) ...

  3. python 正则表达式详解

    正则表达式是一个很强大的字符串处理工具,几乎任何关于字符串的操作都可以使用正则表达式来完成,作为一个爬虫工作者,每天和字符串打交道,正则表达式更是不可或缺的技能,正则表达式的在不同的语言中使用方式可能 ...

  4. 「黑客必备技能」Python正则表达式详解

    说在前面 正则表达式是一个很强大的字符串处理工具,几乎任何关于字符串的操作都可以使用正则表达式来完成,作为一个爬虫工作者,每天和字符串打交道,正则表达式更是不可或缺的技能. 正则表达式在不同的语言中使 ...

  5. 第8.22节 Python案例详解:重写 “富比较”方法控制比较逻辑

    一. 案例说明 本节定义一个小汽车的类Car,类中包括车名carname.百公里油耗oilcostper100km.价格price三个属性.然后实现__lt__.__gt__.__le__.__ge_ ...

  6. Linux文本处理三剑客之grep及正则表达式详解

    Linux文本处理三剑客之grep及正则表达式详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Linux文本处理三剑客概述 grep: 全称:"Global se ...

  7. JavaScript正则表达式详解(二)JavaScript中正则表达式函数详解

    二.JavaScript中正则表达式函数详解(exec, test, match, replace, search, split) 1.使用正则表达式的方法去匹配查找字符串 1.1. exec方法详解 ...

  8. Java 正则表达式详解_正则表达式

    body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...

  9. [转] Python Traceback详解

    追莫名其妙的bugs利器-mark- 转自:https://www.jianshu.com/p/a8cb5375171a   Python Traceback详解   刚接触Python的时候,简单的 ...

随机推荐

  1. [bzoj2547]玩具兵<Spfa+二分+匈牙利算法>

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2547 挺有意思的一道题,这道题可以划分成几个小题....... 题目大意: 三个兵种在一个 ...

  2. ASP.NET Core技术研究-探秘Host主机启动过程

    当我们将原有ASP.NET 应用程序升级迁移到ASP.NET Core之后,我们发现代码工程中多了两个类Program类和Startup类. 接下来我们详细探秘一下通用主机Host的启动过程. 一.P ...

  3. iOS - scrollView与headerView的视差滚动实现思路

    假设场景:viewController里面有一个scrollView,该scrollView有一个headerView.现在需要将scrollView的滚动contentOffset与headerVi ...

  4. LeetCode 题解 | 70. 爬楼梯

    假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 示例 1: 输入: 2 输出: 2 解释: 有两 ...

  5. 一天学一个Linux命令:第一天 ls

    文章更新于:2020-03-02 注:本文参照 man ls 手册,并给出使用样例. 文章目录 一.命令之`ls` 1.名字及介绍 2.语法格式 3.输出内容示例 4.参数 二.命令实践 1.`ls ...

  6. .NET MVC中登录过滤器拦截的两种方法

    今天给大家介绍两种ASP中过滤器拦截的两种方法. 一种是EF 的HtppModule,另一种则是灵活很多针对MVC的特性类 Attribute 具体什么是特性类可以参考着篇文章:https://www ...

  7. 2018蓝桥杯省赛(C/C++ C组)

    因进考场不让带优盘,顾想不起有些啥题了,静待更新吧! 再次强调C++最新标准,main函数必须指定返回类型为int,且返回值最好为0(人走的多了就是路了,有人偏返回999那也没办法) 1.大概是小明给 ...

  8. JavaScript 入门 (一)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  9. Golang Web入门(1):自顶向下理解Http服务器

    摘要 由于Golang优秀的并发处理,很多公司使用Golang编写微服务.对于Golang来说,只需要短短几行代码就可以实现一个简单的Http服务器.加上Golang的协程,这个服务器可以拥有极高的性 ...

  10. 文本表格文件指定分隔符分列转Excel(java实现)

    我的需求: 嗯,实习中遇到,需要过滤数据然后以指定的列名输出为excel 我是这样解决的: 写出到一个文本或者表格文件然后指定分隔符分列的输出excel,因为要设计去重处理. 我需要做的: 写一个文本 ...