详解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 相关文章推荐
Django URL传递参数的方法总结
Aug 28 Python
利用Tkinter和matplotlib两种方式画饼状图的实例
Nov 06 Python
Python实战小程序利用matplotlib模块画图代码分享
Dec 09 Python
python如何求解两数的最大公约数
Sep 27 Python
10分钟教你用python动画演示深度优先算法搜寻逃出迷宫的路径
Aug 12 Python
Pycharm 字体大小调整设置的方法实现
Sep 27 Python
python 通过视频url获取视频的宽高方式
Dec 10 Python
Python 窗体(tkinter)下拉列表框(Combobox)实例
Mar 04 Python
详解Python高阶函数
Aug 15 Python
Python Map 函数的使用
Aug 28 Python
python开根号实例讲解
Aug 30 Python
python中strip(),lstrip(),rstrip()函数的使用讲解
Nov 17 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
全国中波电台频率表
2020/03/11 无线电
PHP分页效率终结版(推荐)
2013/07/01 PHP
php中cookie的使用方法
2014/03/29 PHP
PHP使用PDO操作数据库的乱码问题解决方法
2016/04/08 PHP
详解PHP中cookie和session的区别及cookie和session用法小结
2016/06/12 PHP
PHP实现按之字形顺序打印二叉树的方法
2018/01/16 PHP
把textarea中字符串里含有的回车换行替换成&amp;lt;br&amp;gt;的javascript代码
2007/04/20 Javascript
让你的CSS像Jquery一样做筛选的实现方法
2011/07/10 Javascript
只需20行代码就可以写出CSS覆盖率测试脚本
2013/04/24 Javascript
jquery 获取 outerHtml 包含当前节点本身的代码
2014/10/30 Javascript
纯JavaScript代码实现移动设备绘图解锁
2015/10/16 Javascript
jQuery操作Table技巧大汇总
2016/01/23 Javascript
Kendo Grid editing 自定义验证报错提示的解决方法
2016/11/18 Javascript
AngularJS中$injector、$rootScope和$scope的概念和关联关系深入分析
2017/01/19 Javascript
js下载文件并修改文件名
2017/05/08 Javascript
echart简介_动力节点Java学院整理
2017/08/11 Javascript
Vue插值、表达式、分隔符、指令知识小结
2018/10/12 Javascript
Vue源码探究之虚拟节点的实现
2019/04/17 Javascript
Vue infinite update loop的问题解决
2019/04/23 Javascript
解决layui-table单元格设置为百分比在ie8下不能自适应的问题
2019/09/28 Javascript
Javascript如何实现扩充基本类型
2020/08/26 Javascript
[41:52]2018DOTA2亚洲邀请赛3月29日 小组赛A组 TNC VS OpTic
2018/03/30 DOTA
Python只用40行代码编写的计算器实例
2017/05/10 Python
python语音识别实践之百度语音API
2018/08/30 Python
Python分割训练集和测试集的方法示例
2019/09/19 Python
Python大数据之使用lxml库解析html网页文件示例
2019/11/16 Python
python实现飞行棋游戏
2020/02/05 Python
python 伯努利分布详解
2020/02/25 Python
PyCharm取消波浪线、下划线和中划线的实现
2020/03/03 Python
复古服装:RetroStage
2019/05/10 全球购物
草莓网官网:StrawberryNET
2019/08/21 全球购物
AOP的定义以及作用
2013/09/08 面试题
家长给幼儿园的表扬信
2014/01/09 职场文书
校园环保标语
2014/06/13 职场文书
爱国主题班会教案
2015/08/14 职场文书
如何用JavaScript学习算法复杂度
2021/04/30 Javascript