zoukankan      html  css  js  c++  java
  • python 正则基本方法

    2017-04-11

    学习python,免不了应对爬虫,初学爬虫最难理解的就是正则表达式。

    比如我们要爬去网页上的某些内容,就像下面这种形式:

    <p>safdsf</p><p>sdhjrth</p>

    我们要提取标签内的内容,可以尝试来一次正则提取:

    >>>s="<p>safdsf</p><p>sdhjrth</p>"

    print(re.findall(r'<p>(.*)</p>',s)),这里我们使用findall方法,大家可以思考一下输出的结果,

    ['safdsf</a><a>sdhjrth']结果有点不尽人意,并没有将<p>标签完全去掉。这就要涉及到贪婪与非贪婪模式了,简单点来说就是一个?的问题

    修改过后:

    print(re.findall(r'<a>(.*?)</a>',s))

    ['safdsf', 'sdhjrth']

    这样输出的结果就比较符合我们的要求了。所以正则表达式是非常值得研究的

    下面介绍正则表达式的几个常用方法;

    1,match()方法

    大家不妨实验一下match()的方法,这里就简单说一下

    >>>p=re.compile(r'[a-z]+')

    首先我们先匹配一下,从字母a到z,

    >>>print(p.match('345sdf5ggd6fg'))
    输出:None

    这里我们可以看到输出的结果是none,这是因为match()从字符串的第一位开始匹配,如果第一位不是字母,那么它就不会继续匹配下去。

    >>>print(p.match('a345sdf5ggd6fg'))

    <_sre.SRE_Match object; span=(0, 1), match='a'>

    也就是说只要第一位不是字母,就无法匹配成功。大家可以看一下将p=re.compile(r'[a-z]+')后面的加号换成* 或者去掉。

     p=re.compile(r'[a-z]+')

     print(p.match('abcasd'))     结果:<_sre.SRE_Match object; span=(0, 6), match='abcasd'>

    去掉之后

      p=re.compile(r'[a-z]')

    pritn(p.match('abcasd'))  结果:  <_sre.SRE_Match object; span=(0, 1), match='a'>  

    这里的加号代表

    匹配前面的子表达式一次或多次,关于正则表达的所有符号大家自己百度。

    2..search()方法

    关于search()方法,看上去就比 match更加完美了。

    它没有match()只在第一位匹配的限制了。

     >>>p=re.compile(r'[a-z]+')

    >>>print(m=p.search('234abc'))

    结果:<_sre.SRE_Match object; span=(3, 6), match='abc'>

    的确是比match()方法好,主要看个人的实际应用。

    3.finditer()方法

    finditer() 则是将匹配对象作为一个迭代器返回,举个简单的例子吧。

    p=re.compile(r'd+')
    for
    a in p.finditer('今天是4月11号'): print(a.group(),a.span()) 4 (3, 4) 11 (5, 7)

     4.findall()方法

    与finditer不同的是,findall()方法返回的是一个列表,和search() match()一样。

    5.返回的方法

    group() 返回匹配的字符串
    start() 返回匹配的开始位置
    end() 返回匹配的结束位置
    span() 返回一个元组表示匹配位置(开始,结束)

    正则表达式的高级方法这里就不多说了,会在近期的文章中一一探讨。(大神勿喷)

  • 相关阅读:
    程序设计实习课(0)资源链接
    解决clion2016.3不能支持搜狗输入法的问题
    四元数运动学笔记(5)IMU驱动的运动误差方程
    四元数运动学笔记(4)旋转的雅克比矩阵
    四元数运动学笔记(3)四元数和旋转相关的约定表述
    四元数运动学笔记(2)旋转向量,旋转矩阵和四元数的关系
    单应矩阵,基本矩阵,本质矩阵
    ROS标定IDS相机
    四元数运动学笔记(1)旋转的表示
    IMU Noise Model
  • 原文地址:https://www.cnblogs.com/jjj-fly/p/6695421.html
Copyright © 2011-2022 走看看