欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python连载50-贪婪匹配、XPath介绍

程序员文章站 2023-10-29 10:49:34
一、贪婪和非贪婪 1.贪婪:尽可能多的匹配,(*)表示贪婪匹配 2.非贪婪:找到符合条件的最小内容即可,(?)表示非贪婪 3.正则默认使用贪婪匹配 import re title = u"
name
age
" p1 = re.compile(r"
.* ......

一、贪婪和非贪婪

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())

 

Python连载50-贪婪匹配、XPath介绍

二、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介绍