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标准库之多进程(multiprocessing包)介绍
Nov 25 Python
Python实现对字符串的加密解密方法示例
Apr 29 Python
Python基于回溯法子集树模板解决马踏棋盘问题示例
Sep 11 Python
Php多进程实现代码
May 07 Python
python操作excel的方法(xlsxwriter包的使用)
Jun 11 Python
浅谈python脚本设置运行参数的方法
Dec 03 Python
python实现图片二值化及灰度处理方式
Dec 07 Python
Python子进程subpocess原理及用法解析
Jul 16 Python
Python 下载Bing壁纸的示例
Sep 29 Python
解决pip安装的第三方包在PyCharm无法导入的问题
Oct 15 Python
Django怎么在admin后台注册数据库表
Nov 14 Python
python自动获取微信公众号最新文章的实现代码
Jul 15 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
虹吸式咖啡壶操作
2021/03/03 冲泡冲煮
php 分库分表hash算法
2009/11/12 PHP
php生成缩略图填充白边(等比缩略图方案)
2013/12/25 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
2018/02/23 PHP
PHP调用接口用post方法传送json数据的实例
2018/05/31 PHP
JS 文字符串转换unicode编码函数
2009/05/30 Javascript
javascript 按回车键相应按钮提交事件
2009/11/02 Javascript
Jquery常用技巧收集整理篇
2010/11/14 Javascript
分享27款非常棒的jQuery 表单插件
2011/03/28 Javascript
js判断页面中是否有指定控件的简单实例
2014/03/04 Javascript
微信开发之调起摄像头、本地展示图片、上传下载图片实例
2016/12/08 Javascript
js的三种继承方式详解
2017/01/21 Javascript
详解用node-images 打造简易图片服务器
2017/05/08 Javascript
vue2.0全局组件之pdf详解
2017/06/26 Javascript
解决layui 复选框等内置控件不显示的问题
2018/08/14 Javascript
vue2.0+vue-router构建一个简单的列表页的示例代码
2019/02/13 Javascript
vue实现分页的三种效果
2020/06/23 Javascript
如何基于viewport vm适配移动端页面
2020/11/13 Javascript
[04:01]2014DOTA2国际邀请赛 TITAN告别Ohaiyo期望明年再战
2014/07/15 DOTA
[02:40]2018年度DOTA2最佳新人-完美盛典
2018/12/16 DOTA
在Django的模型中执行原始SQL查询的方法
2015/07/21 Python
使用Python对MySQL数据操作
2017/04/06 Python
浅谈利用numpy对矩阵进行归一化处理的方法
2018/07/11 Python
Python 判断文件或目录是否存在的实例代码
2018/07/19 Python
python三引号输出方法
2019/02/27 Python
Python爬虫实现验证码登录代码实例
2019/05/10 Python
在Python中构建增广矩阵的实现方法
2019/07/01 Python
TensorFlow实现模型断点训练,checkpoint模型载入方式
2020/05/26 Python
Schecker荷兰:狗狗用品和配件
2019/06/06 全球购物
英国领先的电动可调床制造商:Laybrook
2019/12/26 全球购物
介绍一下.NET构架下remoting和webservice
2014/05/08 面试题
机关作风建设整改方案
2014/10/27 职场文书
刑事附带民事代理词
2015/05/25 职场文书
小学思想品德教学反思
2016/02/24 职场文书
JS数组的常用方法整理
2021/03/31 Javascript
详细分析PHP7与PHP5区别
2021/06/26 PHP