一、贪婪和非贪婪
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.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料