Python3中正则模块re.compile、re.match及re.search函数用法详解


Posted in Python onJune 11, 2018

本文实例讲述了Python3中正则模块re.compile、re.match及re.search函数用法。分享给大家供大家参考,具体如下:

re模块 re.compile、re.match、 re.search

import re
str = 'hello world! hello python'
pattern = re.compile(r'(?P<first>hell\w)(?P<symbol>\s)(?P<last>.*ld!)') # 分组,0 组是整个 hello world!, 1组 hello,2组 ld!
match = re.match(pattern, str)
print('group 0:', match.group(0)) # 匹配 0 组,整个字符串
print('group 1:', match.group(1)) # 匹配第一组,hello
print('group 2:', match.group(2)) # 匹配第二组,空格
print('group 3:', match.group(3)) # 匹配第三组,ld!
print('groups:', match.groups())  # groups 方法,返回一个包含所有分组匹配的元组
print('start 0:', match.start(0), 'end 0:', match.end(0)) # 整个匹配开始和结束的索引值
print('start 1:', match.start(1), 'end 1:', match.end(1)) # 第一组开始和结束的索引值
print('start 2:', match.start(1), 'end 2:', match.end(2)) # 第二组开始和结束的索引值
print('pos 开始于:', match.pos)
print('endpos 结束于:', match.endpos) # string 的长度
print('lastgroup 最后一个被捕获的分组的名字:', match.lastgroup)
print('lastindex 最后一个分组在文本中的索引:', match.lastindex)
print('string 匹配时候使用的文本:', match.string)
print('re 匹配时候使用的 Pattern 对象:', match.re)
print('span 返回分组匹配的 index (start(group),end(group)):', match.span(2))

返回结果:

group 0: hello world!
group 1: hello
group 2: 
group 3: world!
groups: ('hello', ' ', 'world!')
start 0: 0 end 0: 12
start 1: 0 end 1: 5
start 2: 0 end 2: 6
pos 开始于: 0
endpos 结束于: 25
lastgroup 最后一个被捕获的分组的名字: last
lastindex 最后一个分组在文本中的索引: 3
string 匹配时候使用的文本: hello world! hello python
re 匹配时候使用的 Pattern 对象: re.compile('(?P<first>hell\\w)(?P<symbol>\\s)(?P<last>.*ld!)')
span 返回分组匹配的 index (start(group),end(group)): (5, 6)

re.search 函数

对整个字符串进行搜索匹配,返回第一个匹配的字符串的 match 对象。

re.search(pattern, string[, flags=0])

  • pattern 匹配模式,由 re.compile 获得
  • string 需要匹配的字符串
import re
str = 'say hello world! hello python'
pattern = re.compile(r'(?P<first>hell\w)(?P<symbol>\s)(?P<last>.*ld!)') # 分组,0 组是整个 hello world!, 1组 hello,2组 ld!
search = re.search(pattern, str)
print('group 0:', search.group(0)) # 匹配 0 组,整个字符串
print('group 1:', search.group(1)) # 匹配第一组,hello
print('group 2:', search.group(2)) # 匹配第二组,空格
print('group 3:', search.group(3)) # 匹配第三组,ld!
print('groups:', search.groups())  # groups 方法,返回一个包含所有分组匹配的元组
print('start 0:', search.start(0), 'end 0:', search.end(0)) # 整个匹配开始和结束的索引值
print('start 1:', search.start(1), 'end 1:', search.end(1)) # 第一组开始和结束的索引值
print('start 2:', search.start(1), 'end 2:', search.end(2)) # 第二组开始和结束的索引值
print('pos 开始于:', search.pos)
print('endpos 结束于:', search.endpos) # string 的长度
print('lastgroup 最后一个被捕获的分组的名字:', search.lastgroup)
print('lastindex 最后一个分组在文本中的索引:', search.lastindex)
print('string 匹配时候使用的文本:', search.string)
print('re 匹配时候使用的 Pattern 对象:', search.re)
print('span 返回分组匹配的 index (start(group),end(group)):', search.span(2))

注意 re.search 和 re.match 匹配的 str 的区别

打印结果:

group 0: hello world!
group 1: hello
group 2: 
group 3: world!
groups: ('hello', ' ', 'world!')
start 0: 4 end 0: 16
start 1: 4 end 1: 9
start 2: 4 end 2: 10
pos 开始于: 0
endpos 结束于: 29
lastgroup 最后一个被捕获的分组的名字: last
lastindex 最后一个分组在文本中的索引: 3
string 匹配时候使用的文本: say hello world! hello python
re 匹配时候使用的 Pattern 对象: re.compile('(?P<first>hell\\w)(?P<symbol>\\s)(?P<last>.*ld!)')
span 返回分组匹配的 index (start(group),end(group)): (9, 10)

Python 相关文章推荐
详解Python import方法引入模块的实例
Aug 02 Python
Python编写一个优美的下载器
Apr 15 Python
对numpy数据写入文件的方法讲解
Jul 09 Python
Python实现的微信支付方式总结【三种方式】
Apr 13 Python
python写入数据到csv或xlsx文件的3种方法
Aug 23 Python
python argparser的具体使用
Nov 10 Python
使用Pandas的Series方法绘制图像教程
Dec 04 Python
Anaconda3+tensorflow2.0.0+PyCharm安装与环境搭建(图文)
Feb 18 Python
Python动态导入模块:__import__、importlib、动态导入的使用场景实例分析
Mar 30 Python
matplotlib.pyplot.matshow 矩阵可视化实例
Jun 16 Python
python使用scapy模块实现ARP扫描的过程
Jan 21 Python
python接口测试返回数据为字典取值方式
Feb 12 Python
python检测空间储存剩余大小和指定文件夹内存占用的实例
Jun 11 #Python
Python3多进程 multiprocessing 模块实例详解
Jun 11 #Python
Python3中的列表生成式、生成器与迭代器实例详解
Jun 11 #Python
python xlsxwriter创建excel图表的方法
Jun 11 #Python
python操作excel的包(openpyxl、xlsxwriter)
Jun 11 #Python
django 使用 request 获取浏览器发送的参数示例代码
Jun 11 #Python
python操作excel的方法(xlsxwriter包的使用)
Jun 11 #Python
You might like
Windows下PHP的任意文件执行漏洞
2006/10/09 PHP
php自定义时间转换函数示例
2016/12/07 PHP
php安全配置记录和常见错误梳理(总结)
2017/03/28 PHP
Yii框架使用魔术方法实现跨文件调用功能示例
2017/05/20 PHP
PHP等比例压缩图片的实例代码
2018/07/26 PHP
javascript 尚未实现错误解决办法
2008/11/27 Javascript
javascript对象之内置对象Math使用方法
2010/04/16 Javascript
使用js实现雪花飘落效果
2013/08/26 Javascript
Javascript学习笔记之数组的构造函数
2014/11/23 Javascript
jQuery中:not选择器用法实例
2014/12/30 Javascript
jQuery 出现Cannot read property ‘msie’ of undefined错误的解决方法
2016/11/23 Javascript
微信小程序录音与播放录音功能
2017/12/25 Javascript
使用javascript做在线算法编程
2018/05/25 Javascript
Vue 组件修改根实例的数据的方法
2019/04/02 Javascript
使用Vue中 v-for循环列表控制按钮隐藏显示功能
2019/04/23 Javascript
Vue项目使用localStorage+Vuex保存用户登录信息
2019/05/27 Javascript
jQuery实现的移动端图片缩放功能组件示例
2020/05/01 jQuery
JavaScript面试中常考的字符串操作方法大全(包含ES6)
2020/05/10 Javascript
JavaScript实现多层颜色选项卡嵌套
2020/09/21 Javascript
JavaScript实现网页tab栏效果制作
2020/11/20 Javascript
Python使用sftp实现上传和下载功能(实例代码)
2017/03/14 Python
对python中return和print的一些理解
2017/08/18 Python
python for 循环获取index索引的方法
2019/02/01 Python
Django使用redis缓存服务器的实现代码示例
2019/04/28 Python
用Python爬取QQ音乐评论并制成词云图的实例
2019/08/24 Python
django之导入并执行自定义的函数模块图解
2020/04/01 Python
Pymysql实现往表中插入数据过程解析
2020/06/02 Python
详解tf.device()指定tensorflow运行的GPU或CPU设备实现
2021/02/20 Python
canvas绘制圆角头像的实现方法
2019/01/17 HTML / CSS
教师推荐信范文
2013/11/24 职场文书
大学生求职推荐信
2013/11/27 职场文书
回门宴新郎答谢词
2014/01/12 职场文书
春季防火方案
2014/05/10 职场文书
公司市场专员岗位职责
2014/06/29 职场文书
财务总监岗位职责
2015/02/03 职场文书
2015年加油站站长工作总结
2015/05/27 职场文书