详解python里使用正则表达式的分组命名方式


Posted in Python onOctober 24, 2017

详解python里使用正则表达式的分组命名方式

分组匹配的模式,可以通过groups()来全部访问匹配的元组,也可以通过group()函数来按分组方式来访问,但是这里只能通过数字索引来访问,如果某一天产品经理需要修改需求,让你在它们之中添加一个分组,这样一来,就会导致匹配的数组的索引的变化,作为开发人员的你,必须得一行一行代码地修改。因此聪明的开发人员又想到一个好方法,把这些分组进行命名,只需要对名称进行访问分组,不通过索引来访问了,就可以避免这个问题。那么怎么样来命名呢?可以采用(?P<name>pattern)的格式来命名。

例子如下:

#python 3.6 
#蔡军生  
#http://blog.csdn.net/caimouse/article/details/51749579 
# 
import re 
 
text = 'This is some text -- with punctuation.' 
 
print(text) 
print() 
 
patterns = [ 
  r'^(?P<first_word>\w+)', 
  r'(?P<last_word>\w+)\S*$', 
  r'(?P<t_word>\bt\w+)\W+(?P<other_word>\w+)', 
  r'(?P<ends_with_t>\w+t)\b', 
] 
 
for pattern in patterns: 
  regex = re.compile(pattern) 
  match = regex.search(text) 
  print("'{}'".format(pattern)) 
  print(' ', match.groups()) 
  print(' ', match.groupdict()) 
  print()

结果输出如下:

This is some text -- with punctuation.

'^(?P<first_word>\w+)'
  ('This',)
  {'first_word': 'This'}

'(?P<last_word>\w+)\S*$'
  ('punctuation',)
  {'last_word': 'punctuation'}

'(?P<t_word>\bt\w+)\W+(?P<other_word>\w+)'
  ('text', 'with')
  {'t_word': 'text', 'other_word': 'with'}

'(?P<ends_with_t>\w+t)\b'
  ('text',)
  {'ends_with_t': 'text'}

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Python 相关文章推荐
Python continue语句用法实例
Mar 11 Python
itchat和matplotlib的结合使用爬取微信信息的实例
Aug 25 Python
Python FTP两个文件夹间的同步实例代码
May 25 Python
pandas.DataFrame.to_json按行转json的方法
Jun 05 Python
Python实现随机创建电话号码的方法示例
Dec 07 Python
对Python 两大环境管理神器 pyenv 和 virtualenv详解
Dec 31 Python
PyCharm安装Markdown插件的两种方法
Jun 24 Python
Flask框架单例模式实现方法详解
Jul 31 Python
Python简易计算器制作方法代码详解
Oct 31 Python
kafka监控获取指定topic的消息总量示例
Dec 23 Python
python 子类调用父类的构造函数实例
Mar 12 Python
JupyterNotebook 输出窗口的显示效果调整实现
Sep 22 Python
在python中使用正则表达式查找可嵌套字符串组
Oct 24 #Python
python爬虫之BeautifulSoup 使用select方法详解
Oct 23 #Python
浅谈python中copy和deepcopy中的区别
Oct 23 #Python
python的构建工具setup.py的方法使用示例
Oct 23 #Python
python使用pyqt写带界面工具的示例代码
Oct 23 #Python
基于Django的python验证码(实例讲解)
Oct 23 #Python
itchat接口使用示例
Oct 23 #Python
You might like
php中有关合并某一字段键值相同的数组合并的改进
2015/03/10 PHP
PHP中常用的数组操作方法笔记整理
2016/05/16 PHP
jQuery EasyUI API 中文文档 - EasyLoader 加载器
2011/09/29 Javascript
Javascript中3种实现继承的方法和代码实例
2014/08/12 Javascript
详解XMLHttpRequest(一)同步请求和异步请求
2016/09/14 Javascript
详解JavaScript树结构
2017/01/09 Javascript
Vue动态组件实例解析
2017/08/20 Javascript
jQuery实现的页面遮罩层功能示例【测试可用】
2017/10/14 jQuery
浅谈从React渲染流程分析Diff算法
2018/09/08 Javascript
JavaScript中的垃圾回收与内存泄漏示例详解
2019/05/02 Javascript
Vue.js中的高级面试题及答案
2020/01/13 Javascript
javascript-hashchange事件和历史状态管理实例分析
2020/04/18 Javascript
JavaScript实现无限轮播效果
2020/11/19 Javascript
使用IPython来操作Docker容器的入门指引
2015/04/08 Python
Python读取txt文件数据的方法(用于接口自动化参数化数据)
2018/06/27 Python
基于python的socket实现单机五子棋到双人对战
2020/03/24 Python
如何分离django中的媒体、静态文件和网页
2019/11/12 Python
Python数据可视化:饼状图的实例讲解
2019/12/07 Python
python3.6环境下安装freetype库和基本使用方法(推荐)
2020/05/10 Python
python 实现图像快速替换某种颜色
2020/06/04 Python
推荐技术人员一款Python开源库(造数据神器)
2020/07/08 Python
css3通过scale()、rotate()实现放大、旋转
2020/03/19 HTML / CSS
简单的HTML5初步入门教程
2015/09/29 HTML / CSS
澳大利亚相机之家:Camera House
2017/11/30 全球购物
先进工作者获奖感言
2014/02/08 职场文书
企业年会主持词
2014/03/27 职场文书
学校周年庆活动方案
2014/08/22 职场文书
小学家长通知书评语
2014/12/31 职场文书
三年级上册科学教学计划
2015/01/21 职场文书
团委工作总结2015
2015/04/02 职场文书
大学生奶茶店创业计划书
2019/06/25 职场文书
go语言map与string的相互转换的实现
2021/04/07 Golang
position:sticky 粘性定位的几种巧妙应用详解
2021/04/24 HTML / CSS
关于React Native使用axios进行网络请求的方法
2021/08/02 Javascript
JavaScript阻止事件冒泡的方法
2021/12/06 Javascript
iOS 16进一步确认,一共支持16款iPhone
2022/04/28 数码科技