和其他的RE表达式一样,但是匹配的子串可以通过group的名字 name来获取。即  result.group('name')  (提示,字符串数字都是常量,所以关键字都可以被视为整型(hash结果))。组名必须是合法的python标识符(即满足python的变量定义规则),每一个组名在RE表达式中有且只能被定义一次。这样特殊的组仍然被定义了序号,就像没有命名的组一样(可以通过\number的形式进行访问),在命名的组可以通过三种方式进行引用。如果RE表达式是(?P<quote>['"]).*?(?P=quote) (匹配字符串一个或两个引用)

回溯引用组,它匹配之前组所匹配的任意字符,并且查找匹配组名为 name的内容,不匹配会抛出异常。

import re

string1 = "<span>hello world</span>"
rs = re.match("(?P<span_contexts><span>(.*?)</span>)",string1)
print("group0",rs.group(0))
print("group1",rs.group(1))
print("group2",rs.group(2))
print(rs.group("span_contexts"))

输出

group0 <span>hello world</span>
group1 <span>hello world</span>
group2 hello world
<span>hello world</span>

通过上面的例子我们可以看出在组里面可以嵌套组,组的标记序号以左括号为准,从左到右依次增加

然后我们就匹配除了value helloworld

同时我们也可以通过print(rs.group("span_contexts"))来访问我们匹配到的数据但是前后的数据必须是一致的。

案例二

import re

string1 = "<span>hello world</span>hello world"
rs = re.match("<span>(?P<span_contexts>.*?)</span>(?P=span_contexts)",string1)
print(rs)
print("group0",rs.group(0))
print("group1",rs.group(1))
# print("group2",rs.group(2))
print(rs.group("span_contexts"))

输出

<re.Match object; span=(0, 35), match='<span>hello world</span>hello world'>
group0 <span>hello world</span>hello world
group1 hello world
hello world

通过案例输出

第一行我们可以看出前面所匹配的内容必须前后一致(不一致会报错,在此不做演示)

也表明了我们通过(?P=span_contexts)的方式可以引用成功 类比于 \number

但是他不行成新的组,这点也类比于\number,因为(?P=span_contexts)所代表的含义是,

我这一块内容和前面某个组的内容是一样的,所以没有在此创建组的意义。

python学习之re (?P...)通过关键字获取组以及( P=name)的更多相关文章

  1. python 学习笔记 12 -- 写一个脚本获取城市天气信息

    近期在玩树莓派,前面写过一篇在树莓派上使用1602液晶显示屏,那么可以显示后最重要的就是显示什么的问题了. 最easy想到的就是显示时间啊,CPU利用率啊.IP地址之类的.那么我认为呢,假设可以显示当 ...

  2. Python 学习笔记:根据输入年月获取该月的第一天和最后一天

    目的: 给定一个时间,比如:2020.02,要求返回所输入月份的第一天及最后一天,比如:('2020.02.01', '2020.02.29') 参考博客:https://blog.csdn.net/ ...

  3. 20180821 Python学习笔记:如何获取当前程序路径

    20180821 Python学习笔记:如何获取当前程序路径 启动的脚本的路径为:D:\WORK\gitbase\ShenzhenHouseInfoCrawler\main.py 当前脚本的路径为:D ...

  4. python学习笔记系列----(八)python常用的标准库

    终于学到了python手册的最后一部分:常用标准库.这部分内容主要就是介绍了一些基础的常用的基础库,可以大概了解下,在以后真正使用的时候也能想起来再拿出来用. 8.1 操作系统接口模块:OS OS模块 ...

  5. python学习之路-day2-pyth基础2

    一.        模块初识 Python的强大之处在于他有非常丰富和强大的标准库和第三方库,第三方库存放位置:site-packages sys模块简介 导入模块 import sys 3 sys模 ...

  6. Python 学习日记(第三周)

    知识回顾 在上一周的学习里,我学习了一些学习Python的基础知识下面先简短的回顾一些: 1Python的版本和和安装 Python的版本主要有2.x和3.x两个版本这两个版本在语法等方面有一定的区别 ...

  7. Python:Python学习总结

    Python:Python学习总结 背景 PHP的$和->让人输入的手疼(PHP确实非常简洁和强大,适合WEB编程),Ruby的#.@.@@也好不到哪里(OO人员最该学习的一门语言). Pyth ...

  8. Python学习的个人笔记(基础语法)

    Python学习的个人笔记 题外话: 我是一个大二的计算机系的学生,这份python学习个人笔记是趁寒假这一周在慕课网,w3cschool,还有借鉴了一些博客,资料整理出来的,用于自己方便的时候查阅, ...

  9. python学习之路基础篇(第四篇)

    一.课程内容回顾 1.python基础 2.基本数据类型  (str|list|dict|tuple) 3.将字符串“老男人”转换成utf-8 s = "老男人" ret = by ...

随机推荐

  1. HTML 5 & checkbox & switch components

    HTML 5 & checkbox & switch components <!DOCTYPE html> <html lang="zh-Hans" ...

  2. AVIER Racing Drone App Privacy Policy

    Personal Data collected for the following purposes and using the following services: Device permissi ...

  3. 想玩 Android 开发板?这些常用命令你不知不行!

    2019-04-19 关键字:Android机顶盒常用命令.Linux命令 笔者早年间从事 Android 机顶盒开发工作,那会刚毕业,技术也比较菜,工作过程中遇到过不少困难,不过所幸当时就有做笔记的 ...

  4. DRF 商城项目 - 购物( 购物车, 订单, 支付 )逻辑梳理

    购物车 购物车模型 购物车中的数据不应该重复. 即对相同商品的增加应该是对购买数量的处理而不是增加一条记录 因此对此进行联合唯一索引, 但是也因此存在一些问题 class ShoppingCart(m ...

  5. Oracle中的AWR,全称为Automatic Workload Repository

    Oracle中的AWR,全称为Automatic Workload Repository,自动负载信息库.它收集关于特定数据库的操作统计信息和其他统计信息,Oracle以固定的时间间隔(默认为1个小时 ...

  6. 使用diff或者vimdiff比较远程文件(夹)与本地文件夹

    方法1:管道给diff $ssh eric@192.168.1.11 "cat ~/remote_file.txt" | diff - ~/local_file.txt 如果 Fi ...

  7. Spring WebFlux 要革了谁的命?

    Spring WebFlux 要革了谁的命?  mp.weixin.qq.com 托梦 Java国王昨晚做了一个梦. 梦中有个白胡子老头儿,颇有仙风道骨, 告诉他说:“你们Java啊,实在是太弱了,连 ...

  8. SVG矢量图学习实例

    从W3school上学习了一下SVG矢量图形,感觉和HTML相比还是有一些新的元素和属性的,一时间不能全部记住,特此留下笔记,供遗忘时作为参考 <!DOCTYPE html> <!- ...

  9. Mybatis技术原理理——整体流程理解

    前言:2018年,是最杂乱的一年!所以你看我的博客,是不是很空! 网上有很多关于Mybatis原理介绍的博文,这里介绍两篇我个人很推荐的博文 Mybatis3.4.x技术内幕和 MyBaits源码分析 ...

  10. DTW和DBA

    DTW(动态时间调整) 动态时间调整算法是大多用于检测两条语音的相似程度,由于每次发言,每个字母发音的长短不同,会导致两条语音不会完全的吻合,动态时间调整算法,会对语音进行拉伸或者压缩,使得它们竟可能 ...