详解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学习之第三方包安装方法(两种方法)
Jul 30 Python
Python中表示字符串的三种方法
Sep 06 Python
Flask框架通过Flask_login实现用户登录功能示例
Jul 17 Python
Python Selenium 之关闭窗口close与quit的方法
Feb 13 Python
利用Python实现kNN算法的代码
Aug 16 Python
使用pygame写一个古诗词填空通关游戏
Dec 03 Python
将python包发布到PyPI和制作whl文件方式
Dec 25 Python
pytorch AvgPool2d函数使用详解
Jan 03 Python
pytorch-神经网络拟合曲线实例
Jan 15 Python
python logging.basicConfig不生效的原因及解决
Feb 20 Python
python对数组进行排序,并输出排序后对应的索引值方式
Feb 28 Python
python中温度单位转换的实例方法
Dec 27 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学习笔记之三 数据库基本操作
2011/01/17 PHP
php设计模式 Mediator (中介者模式)
2011/06/26 PHP
PHP字符串中特殊符号的过滤方法介绍
2014/02/18 PHP
PHP实现抓取迅雷VIP账号的方法
2015/07/30 PHP
php实现mysql数据库连接操作及用户管理
2015/11/08 PHP
使用Huagepage和PGO来提升PHP7的执行性能
2015/11/30 PHP
Zend Framework教程之Zend_Config_Ini用法分析
2016/03/23 PHP
ThinkPHP打水印及设置水印位置的方法
2016/10/14 PHP
基于PHP实现短信验证码发送次数限制
2020/07/11 PHP
了解jQuery技巧来提高你的代码(个人觉得那个jquery的手册很不错)
2012/02/10 Javascript
5分钟理解JavaScript中this用法分享
2013/11/09 Javascript
通过隐藏iframe实现文件下载的js方法介绍
2014/02/26 Javascript
js css 实现遮罩层覆盖其他页面元素附图
2014/09/22 Javascript
JavaScript中常见获取元素的方法汇总
2015/03/04 Javascript
Node.js与Sails ~项目结构与Mvc实现及日志机制
2015/10/14 Javascript
老生常谈原生JS执行环境与作用域
2016/11/22 Javascript
canvas绘制表盘时钟
2017/01/23 Javascript
深入理解JavaScript中的for循环
2017/02/07 Javascript
详解angularJs指令的3种绑定策略
2017/04/13 Javascript
Python生成pdf文件的方法
2014/08/04 Python
python中的随机函数random的用法示例
2018/01/27 Python
Python实现上下班抢个顺风单脚本
2018/02/07 Python
Python cookbook(数据结构与算法)从任意长度的可迭代对象中分解元素操作示例
2018/02/13 Python
python模块导入的细节详解
2018/12/10 Python
如何通过python画loss曲线的方法
2019/06/26 Python
python except异常处理之后不退出,解决异常继续执行的实现
2020/04/25 Python
canvas画布实现手写签名效果的示例代码
2019/04/23 HTML / CSS
Canvas绘制浮动球效果的示例
2017/12/29 HTML / CSS
德国的大型美妆个护电商:Flaconi
2020/06/26 全球购物
什么是ESB?请介绍一下ESB?
2015/05/27 面试题
函授毕业生自我鉴定
2013/11/06 职场文书
优秀员工自荐书范文
2013/12/08 职场文书
监督检查工作方案
2014/05/28 职场文书
防卫过当辩护词
2015/05/21 职场文书
2015秋季开学典礼演讲稿
2015/07/16 职场文书
2016年庆祝六一儿童节活动总结
2016/04/06 职场文书