zoukankan      html  css  js  c++  java
  • Python爬虫-正则表达式

    正则表达式

    只提取关注的数据,进行数据赛选

    原子:

    基本组成单位

    普通的字符

    非打印支付

    通用字符


    普通的字符

    >>> import re
    >>> pat="yue"
    >>> string="http://yum.iqianyue.com"
    >>> rst1=re.search(pat,string)
    >>> print(rst1)
    <_sre.SRE_Match object; span=(16, 19), match='yue'>
    >>> pat2="abc"
    >>> rst2=re.search(pat2,string)
    >>> print(rst2)
    None
    >>>

    非打印字符()


    通用字符

    |w                                    |W处理字符下滑线任意的字符

    |d 十进位数                    |D

    |s 空白字符                    |S

    >>> pat4="wdpythonw"
    >>> string"hahahhadhsfd10pythondasdsadas"
    SyntaxError: invalid syntax
    >>> string="hahahhadhsfd10pythondasdsadas"
    >>> rst5=re.search (pat4,string)
    >>> print(rst5)
    <_sre.SRE_Match object; span=(12, 21), match='10pythond'>
    >>> 

    原子表 【jsz】表示 只有一位的匹配出来

    >>> pat="pyth[jsz]n"
    >>> string = "hsdsdfjsdzpythsdfdfda"
    >>> rst6=re.search (pat,string)
    >>> print(rst6)
    None

    元字符

    特殊含义的字符,比如重复前边的n字符

    .匹配任意字符

    ^匹配

    $匹配结束

    *匹配一次 零次 或者多次

    ?匹配零次或者一次

    {n}

    {n,}

    s{4,7} 表示 s 最少出现4次 最多出现7次

    t{3}前面的原子出现t,3次

    ()

    import re
    pat=".python..."
    string="dfdsfsfpythonfsdfdsfds"
    rst=re.search (pat,string)
    print(rst)
    。除了换行符任意字符
    pat1="python|php"
    string2="abcdphp5454pythonfdfd"
    rst2=re.search(pat1,string2)
    print(rst2)

    模式修正符

    在不改变正则表达式的情况下,实则想要的结果

    忽略大小写L M L U S

    pat3="python"
    pat4="python"
    string3="dfdsfasPythonfafdfa"
    rst4=re.search(pat3,string3)
    print(rst4)
    rst5=re.search(pat3,string,re.L)
    print(rst5)
    <_sre.SRE_Match object; span=(7, 13), match='python'>

    贪婪模式和懒惰模式

    贪婪尽可能多的匹配

    懒惰尽可能少的匹配

    import re
    
    string="dfdsfsfpythonfsdfdsfdsfdfdfdfy"
    pat5="p.*y"#贪婪模式
    pat6="p.*?y"#懒惰模式
    rst5=re.search(pat5,string)
    print(rst5)
    rst6=re.search(pat6,string)
    print(rst6)
    
    <_sre.SRE_Match object; span=(7, 30), match='pythonfsdfdsfdsfdfdfdfy'>
    <_sre.SRE_Match object; span=(7, 9), match='py'>
    >>> 

    正则表达式函数

    re.match() :从头开始搜索

    re.search(): 字符串中搜索 左 到 右 

    全局匹配函数:re.compile(pat1).findall(string)

    re.sub()

    import re
    
    pat="p.*?y"
    string="pdasdaysdfdsfdsfpdadadasydfsfdfsf"
    rst=re.compile(pat).findall(string)
    print(rst)
    ['pdasday', 'pdadadasy']
    >>> 

  • 相关阅读:
    神经网络中的数据预处理方法 Data Preprocessing
    keras中 LSTM 的 [samples, time_steps, features] 最终解释
    keras 学习文档
    tensorflow 中 softmax_cross_entropy_with_logits 与 sparse_softmax_cross_entropy_with_logits 的区别
    对 tensorflow 中 tf.nn.embedding_lookup 函数的解释
    好久不git这么多问题
    去不去创业?
    抗压能力
    培养好的阅读习惯
    深度工作
  • 原文地址:https://www.cnblogs.com/duxiao/p/7543646.html
Copyright © 2011-2022 走看看