一、贪婪和非贪婪

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介绍的更多相关文章

  1. 第11.8节 Python正则表达式的重复匹配模式及元字符“?”、 “*”、 “+”功能介绍

    符号"?".""."+"这三个元字符修饰符在Python中都表示重复匹配的模式,即要求匹配的字符串满足重复次数的要求,但具体重复次数要求不同 ...

  2. Python第五章__模块介绍,常用内置模块

    Python第五章__模块介绍,常用内置模块 欢迎加入Linux_Python学习群  群号:478616847 目录: 模块与导入介绍 包的介绍 time &datetime模块 rando ...

  3. 简学Python第五章__模块介绍,常用内置模块

    Python第五章__模块介绍,常用内置模块 欢迎加入Linux_Python学习群  群号:478616847 目录: 模块与导入介绍 包的介绍 time &datetime模块 rando ...

  4. C#操作xml SelectNodes,SelectSingleNode总是返回NULL 与 xPath 介绍

    一. SelectNodes,SelectSingleNode总是返回NULL 下面以一个简单的xml为例: <?xml version="1.0"?> <mes ...

  5. Python 利用Python操作excel表格之openyxl介绍Part2

    利用Python操作excel表格之openyxl介绍 by:授客 QQ:1033553122 欢迎加入全国软件测试交流qq群(群号:7156436) ## 绘图 c = LineChart()    ...

  6. Python正则的贪婪和非贪婪示例

    贪婪匹配 import re info = """ saas12 [STREAM] codec_type=audio111 [/STREAM]-- [STREAM] co ...

  7. 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' >> ...

  8. Python编程中 re正则表达式模块 介绍与使用教程

    Python编程中 re正则表达式模块 介绍与使用教程 一.前言: 这篇文章是因为昨天写了一篇 shell script 的文章,在文章中俺大量调用多媒体素材与网址引用.这样就会有一个问题就是:随着俺 ...

  9. 正则表达式 整理(\w \s \d 点 贪婪匹配 非贪婪匹配 * + ? {} | [] ^ $ \b 单词边界 分组、re.findall()、re.split()、re.search()、re.match()、re.compile()、re.sub())

    re.findall  匹配到正则表达式的字符,匹配到的每个字符存入一个列表,返回一个匹配到的所有字符列表 一. 匹配单个字符 import re # \w 匹配所有字母.数字.下划线 re.find ...

随机推荐

  1. 团队项目之Scrum5

    小组:BLACK PANDA 时间:2019.11.25   每天举行站立式会议 提供当天站立式会议照片一张 2 昨天已完成的工作 2 实现文章展示页面 完善后台的编辑功能接口 今天计划完成的工作 2 ...

  2. 高维数据Lasso思路

    海量数据的特征工程中, 如果数据特征维度达到几千乃至上万 常规的lasso很容易失效 这里介绍几种泛义lasso,是在实际数据处理中常用的 迭代与分块思路/分组的使用(有兴趣的同学可自行实践一下) 1 ...

  3. LinuxPXE+Kickstrart无人值守安装服务

    要求:关闭VMware虚拟网络编辑器中自身的DHCP服务 主机名称 操作系统 IP地址 NoneOS Centos7 192.168.72.250 Custormer 无   1.挂在本地镜像源本配置 ...

  4. Red Hat Enterprise Linux 官方正式版镜像下载

    Red Hat Enterprise Linux是美国红帽公司开发的商业市场导向的Linux发行版,为方便大家学习研究,整理分享历代红帽官方正式版镜像给有需要的朋友们. 下载地址:https://ww ...

  5. MongoDB数据库常用SQL命令 — MongoDB可视化工具Robo 3T

    1.db.collection.updateMany() 修改集合中的多个文档. db.getCollection('user').find({"pId":"3332a5 ...

  6. BootStrap 关于input与btn的点击focus取消特效相关css

    取消btn按钮点击出现的外边框: .btn:focus, /*清除btn按钮点击出现的边框*/.btn:active:focus,.btn.active:focus,.btn.focus,.btn:a ...

  7. SPARQL入门(二)使用Java操作ARQ

      在文章SPARQL入门(一)SPARQL简介与简单使用中,我们了解了RDF.SPARQL以及基于Java编写的SPARQL处理器ARQ.在本文中,笔者将会如何使用Java来操作ARQ.   注意到 ...

  8. 请求时发送OPTIONS请求

    最近在用uni-app开发项目时,发现一个之前没注意到的点,当我发送POST请求的时候,在NetWork可以看到在发送正式的POST请求时,会先发送一个OPTIONS请求,OPTIONS请求后才会发送 ...

  9. SpringCloud的入门学习之概念理解、Hystrix断路器

    1.分布式系统面临的问题,复杂分布式体系结构中的应用程序有数十个依赖关系,每个依赖关系在某些时候将不可避免地失败. 2.什么是服务雪崩? 答:多个微服务之间调用的时候,假设微服务A调用微服务B和微服务 ...

  10. 墙上你APP设计与实现

    墙上你APP,听名字你们就应该可以想到是一个类似于表白墙吧,其实在做这个项目的时候我就是看到我们学校有一个专门工程墙,但是你找它发布消息表白或者找寻自己在学校掉了的饭卡或者身份证的时候,需要等它们同意 ...