zoukankan      html  css  js  c++  java
  • 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.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料

     

  • 相关阅读:
    debounce
    react-xiguan
    备忘录
    ie导出问题
    umi 动态路由配置
    tsconfig
    关于vue 和react 中的hash与锚点冲突问题
    lodash
    pyplot绘图
    Numpy实现图像变换
  • 原文地址:https://www.cnblogs.com/ruigege0000/p/11839392.html
Copyright © 2011-2022 走看看