Python连载50-贪婪匹配、XPath介绍
一、贪婪和非贪婪
1.贪婪:尽可能多的匹配,(*)表示贪婪匹配
2.非贪婪:找到符合条件的最小内容即可,(?)表示非贪婪
3.正则默认使用贪婪匹配
import re title = u"<div>name</div><div>age</div>" p1 = re.compile(r"<div>.*</div>")#贪婪模式 p2 = re.compile(r"<div>.*?<div>")#非贪婪模式 m1 = p1.search(title) print(m1.group()) m2 = p2.search(title) print(m2.group())
二、XPATH
1.释义:在XML文件中查找信息的一套规则/语言,根据XML的元素
文档帮助:http://www.w3cshool.com.cn/xpath/index.asp
2.XPath开发工具
开源的XPath表达式编辑工具:XMLQuire
Chrome插件:XPath
Helper
Firefox插件:XPath
Checker
3.怎么在XML文件中选取节点
(1)nodename:选取此节点的所有子节点
(2)/:从根节点开始选取
例子:/Student:没有结果
/School:选取School节点
(3)//:选取节点,不考虑位置
例子://age:选取三个节点,一般组成列表返回
(4).:选取当前节点
(5)..:选取当前节点的父亲节点
(6)@:选取属性
(7)Xpath中查找一般按照路径方法查找
School/teacher:返回teacher节点
School/student:返回两个student节点
//Student:选取所有Student的节点,不考虑位置
School//Age:选取School后代中所有的Age节点
//@Other:选取Other属性
//Age[@Details]:选取带有属性Details的Age元素
<?xml version="1.0" encoding="utf-8" ?> <School> <Teacher desc="PythonTeacher" score="good"> <name>LiuDana</name> <Age_1 Details="Age for year 2010">18</Age_1> <Mobile>13260446055</Mobile> </Teacher> <Student> <Name Other="他是班长">ZhangSan</Name> <Age Details="The youngest boy in class">14</Age> </Student> <Student> <Name>LiSi</Name> <Age>19</Age> <Mobile>15578875040</Mobile> </Student> </School>
4.谓语
/School/Student[1]:选取School下面的第一个Student节点
/School/Student[last()]:选取School下面的最后一个Student节点
/School/Student[last()-1]:选取School下面的倒数第二个Student节点
/School/Student[position()<3]:选取School下面的前两个节点
//Student[@score]:选取带有属性score的Student节点
//Student[@score="99"]:选取带有属性score并且属性值为99的Student节点
//Student[@score]/Age:选取带有属性score的Student节点的子节点Age
5.XPath中的一些操作
(1)|:或者
例如://Student[@score] | //Teacher:选取带有属性score的Student节点或者Teacher节点
(2)其余不常见的XPath运算符号包括+.-.*,div(除法的意思),>,<
二、源码
D31_2_GreedMatch.py
D32_1_School.xml
https://github.com/ruigege66/Python_learning/blob/master/D31_2_GreedMatch.py
https://github.com/ruigege66/Python_learning/blob/master/D32_1_School.xml
2.CSDN:https://blog.csdn.net/weixin_44630050(心悦君兮君不知-睿)
3.博客园:https://www.cnblogs.com/ruigege0000/
4.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料
Python连载50-贪婪匹配、XPath介绍的更多相关文章
- 第11.8节 Python正则表达式的重复匹配模式及元字符“?”、 “*”、 “+”功能介绍
符号"?".""."+"这三个元字符修饰符在Python中都表示重复匹配的模式,即要求匹配的字符串满足重复次数的要求,但具体重复次数要求不同 ...
- Python第五章__模块介绍,常用内置模块
Python第五章__模块介绍,常用内置模块 欢迎加入Linux_Python学习群 群号:478616847 目录: 模块与导入介绍 包的介绍 time &datetime模块 rando ...
- 简学Python第五章__模块介绍,常用内置模块
Python第五章__模块介绍,常用内置模块 欢迎加入Linux_Python学习群 群号:478616847 目录: 模块与导入介绍 包的介绍 time &datetime模块 rando ...
- C#操作xml SelectNodes,SelectSingleNode总是返回NULL 与 xPath 介绍
一. SelectNodes,SelectSingleNode总是返回NULL 下面以一个简单的xml为例: <?xml version="1.0"?> <mes ...
- Python 利用Python操作excel表格之openyxl介绍Part2
利用Python操作excel表格之openyxl介绍 by:授客 QQ:1033553122 欢迎加入全国软件测试交流qq群(群号:7156436) ## 绘图 c = LineChart() ...
- Python正则的贪婪和非贪婪示例
贪婪匹配 import re info = """ saas12 [STREAM] codec_type=audio111 [/STREAM]-- [STREAM] co ...
- str.replace()和re.sub()/calendar.month_abbr/re.subn()/upper和lower和capitalize/贪婪匹配和费贪婪匹配/re.S和re.DOTALL 笔记
str.replace()可以进行简单的替换 >>> a = 'one.txt, index.py, index.php, index.html, index.js' >> ...
- Python编程中 re正则表达式模块 介绍与使用教程
Python编程中 re正则表达式模块 介绍与使用教程 一.前言: 这篇文章是因为昨天写了一篇 shell script 的文章,在文章中俺大量调用多媒体素材与网址引用.这样就会有一个问题就是:随着俺 ...
- 正则表达式 整理(\w \s \d 点 贪婪匹配 非贪婪匹配 * + ? {} | [] ^ $ \b 单词边界 分组、re.findall()、re.split()、re.search()、re.match()、re.compile()、re.sub())
re.findall 匹配到正则表达式的字符,匹配到的每个字符存入一个列表,返回一个匹配到的所有字符列表 一. 匹配单个字符 import re # \w 匹配所有字母.数字.下划线 re.find ...
随机推荐
- 使用 Flutter 开发 Mac 桌面应用
Flutter 可以开发 Mac,Linux,Windows 桌面,但是对于平台目前只能打对于的包,以及调试本平台的包. 切换到 master 分支 首先必须切换到 master 分支.我之前在 de ...
- LeetCode刷题191125
博主渣渣一枚,刷刷leetcode给自己瞅瞅,大神们由更好方法还望不吝赐教.题目及解法来自于力扣(LeetCode),传送门. 今天状态不好,划一下水. 算法: 给定一个整数数组 nums 和一个目标 ...
- 使用vsphere client 克隆虚拟机的具体操作步骤
采用 VMWare ESXi6.0,使用ESXi经常会遇到这样的问题,需要建立多个虚拟机,都是一样的操作系统,但是如果一台台装效率太低. VMware ESXi.VMware vCenter Serv ...
- SQL Server之替换文本内容中的回车符和换行符
UPDATE 表 SET 栏位A = REPLACE(栏位A, CHAR(10), '') UPDATE表 SET 栏位A = REPLACE(栏位A, CHAR(13), '')
- 如何使用coe_load_sql_profile.sql来固定sql profile
SQLT工具包含一个脚本,名字是 coe_load_sql_profile.sql,下面以用户SCOTT的EMP表为例,说明如何使用该脚本固定sql profile. 1. SQL> -- 对e ...
- CodeForces - 460C(二分+差分)
题意 https://vjudge.net/problem/CodeForces-460C 一个长度为 n 的序列 a ,你有 m 次操作的机会,每次操作是将其中连续的 w 个元素增加 1 .最大化最 ...
- August 11th, 2019. Week 33rd, Sunday
Worry does not empty tomorrow of its sorrow. It empties today of its strength. 忧虑不会消除明天的痛苦,它只会削弱今天的力 ...
- JVM基础回顾记录(二):垃圾收集
垃圾收集流程&HotSpot对该流程的实现方式 上一篇介绍了jvm的内存模型,本篇将介绍虚拟机中最为复杂的一部分:垃圾收集,本篇会从垃圾回收前的准备工作到后面的收集阶段的方式以及HotSpot ...
- 如何使用终端默认情况下阻止Mac应用保存到iCloud
当您保存要在Mac上的Pages,Numbers,TextEdit或其他基于云的应用程序中处理的文档时,该保存的默认位置是iCloud.尽管这对某些人或某些文档来说可能是一件好事,但您可能会厌倦每次更 ...
- 基于V7的新版RL-USB V6.X + RL-FlashFS V6.X模板,操作CLASS10的SD卡速度12-15MB/S,含RTX5和FreeRTOS两版
说明: 1.如果需要RL-USB源码的话,将DAPLink(CMSIS-DAP)里面的USB代码导出来即可,DAPLink开源了RL-USB的Device代码. 也可以反过来,在工程模板的基 ...