zoukankan      html  css  js  c++  java
  • python_正则表达式

    正则表达式:将数据进行筛选的一种表达式

    原子是正则表达式中最基本的组成单位,每个表达式中至少含有一个原子,

    1.普通字符作为原子,2.非打印字符作为原子,3.通用字符作为原子,4.原子表

    使用正则表达式需先导入re模块

    re.search(条件,范围)

    >>> import re
    >>> pat = 'yue'
    >>> string = 'http://yum.iqianyue.com'
    >>> rse = re.search(pat,string)
    >>> print(rse)
    <re.Match object; span=(16, 19), match='yue'>
    import re
    tj = 'hel[l,1,I]o'
    fw1 = 'axuawnxaihel1o'
    fw2 = 'axuawnxaihelIo'
    fw3 = 'axuawnxaihello'
    res1 = re.search(tj,fw1)
    res2 = re.search(tj,fw2)
    res3 = re.search(tj,fw3)
    print(res1,res2,res3)
    #条件可以在【】中任意一个

    /w:匹配非特殊字符               _______/W:匹配特殊字符

    /d:匹配十进制数      /D:匹配非十进制数

    /s:匹配任意空白字符    /S:匹配非空白字符

    元字符:正则表达式中具有特殊意义的字符,比如重复n此前面的字符

    .:匹配任意字符

    ^:匹配字符串开始的位置,在原子表里面代表非

    $:匹配字符串结束的位置

    *:匹配0次,1次,多次的字符串

    ?:匹配0次或一次

    +:匹配一次或多次

    x{自定义}:匹配x自定义的次数

    {n,}:至少出现了n次

    {n,m}至少出现 了n次,最大出现了m次

    |:模式选择符,或

    ():提取某一内容

    模式修正符:在不改变 正则表达式的情况下改变正则表达式的含义

    I(i):忽略表达式不区分大小写

    M:实现多行匹配

    L:本地化识别匹配

    U:根据uncode字符解析字符

    S:让.匹配换行符

    import re
    tj = 'python'
    fw1 = 'axuawnxPyThonaihel1o'
    res1 = re.search(tj,fw1,re.I)
    print(res1)

    懒惰模式,贪婪模式,全区搜索

    .*:贪婪模式,搜索到第一个条件然后到最后一个条件,如果中间满足条件则不停止

    import re
    tj = 'p.*y'
    fw1 = 'atyupxuawnxPyThonaihel1oy'
    res1 = re.search(tj,fw1,re.I)
    print(res1)
    #<re.Match object; span=(4, 25),  match='pxuawnxPyThonaihel1oy'>

    /*?:懒惰模式:跟贪婪模式相对,中间出现满足条件则直接终结

    import re
    tj = 'p.*?y'
    fw1 = 'atyupxuawnxPyThonaihel1oy'
    res1 = re.search(tj,fw1,re.I)
    print(res1)
    #<re.Match object; span=(4, 13), match='pxuawnxPy'>

    re.match(条件,范围):开头必须为条件否则直接为None,跟懒惰模式差不多

    re.compile(条件).findall(范围):全局搜索,将范围内所有满足条件的全部列举出来

    import re
    tj = 'p.*?y'
    fw1 = 'ptyupxuawnxPyThonaihel1oy'
    res1 = re.compile(tj).findall(fw1)
    print(res1)
    #['pty', 'pxuawnxPy']

    匹配一个.com或.cn的网址

    import re
    pa= "[a-zA-Z]+://[^s]*[.com|.cn]"
    fw = '<a href="http://www.baidu.com">head</a>'
    w = re.compile(pa).findall(fw)
    print(w)
    #[a-zA-Z]+是指http必须出现一次
    #[^s]是指从开头非空白字符
    #:*是指匹配多个字符串
    #[.com|.cn]是指二选一

    爬取网站qq群号

    import urllib.request
    import re
    tes = '<e>(.*?)</e>'
    fw = urllib.request.urlopen('http://sd.huatu.com/zt/qqun/').read()
    p1 =re.compile(tes).findall(str(fw))
    print(p1)

     在爬取数据时,数据必须进行编码

    例如data = 

    urllib.request.urlopen("http://www.ttmeishi.com/QQqun/").read()

     data = data.decode('编码')

    urllib模块基础

    urlretrieve(url,filename=本地地址):将网站爬取到本地
    urlcleanup():将urlretrieve产生的本地缓存清除
    info:将基本环境的信息展现出来
    getcode:获取网站的状态码
    geturl:获取网站的网址

  • 相关阅读:
    BZOJ3403: [Usaco2009 Open]Cow Line 直线上的牛
    lintcode入门篇三
    lintcode入门篇二
    lintcode入门篇一
    matplotlib
    Pandas
    Numpy
    缓存
    Django性能优化的几种方法
    python总结十一
  • 原文地址:https://www.cnblogs.com/Alom/p/11180740.html
Copyright © 2011-2022 走看看