zoukankan      html  css  js  c++  java
  • 第二篇:正则表达式

    爬虫需要用到正则,python内置了正则re模块

    #!/usr/bin/env python3.5
    # _*_coding:utf-8 _*_
    
    import re
    
    #要匹配对象
    line = "This is a beautiful woman"
    #匹配模式,^表示行首,
    regex_str1 = "^T.*n$"
    regex_str2 = "^t"
    
    if re.match(regex_str1,line):
        print("以T开头,以n结尾")
    
    if re.match(regex_str2,line):
        print("以t开头")

    关于贪婪匹配和懒惰匹配:正则默认匹配模式是贪婪匹配模式:

    line = "AOOOOAOOOABAlfsdf"
    regex_str = ".*(A.*A).*"
    match_obj = re.match(regex_str,line)
    print(match_obj.group(1))

    result:
    ABA

    上面的例子,这种属于贪婪匹配,下面引入? 符号就能看出效果了,?属于懒惰匹配:

    line = "AOOOOAOOOABAlfsdf"
    regex_str = "A.*?A"
    match_obj = re.match(regex_str,line)
    print(match_obj.group())

    result:
    AOOOOA

    没加?的情况:

    line = "AOOOOAOOOABAlfsdf"
    regex_str = "A.*A"
    match_obj = re.match(regex_str,line)
    print(match_obj.group())
    
    result:
    AOOOOAOOOABA

    +前面的字符至少出现一次,下面的子字符串‘AA’就不符合要求了:

    line = "AOOOOAOOOABAlfAAsdf"
    regex_str = ".*(A.+A)"
    match_obj = re.match(regex_str,line)
    print(match_obj.group(1))
    
    result:
    AlfAA

    大括号,限定次数:

    {m}匹配前一个字符m次,{m,n}匹配前一个字符m到n次,省略n则匹配m至无限次,省略m则匹配0至n次

    中括号,指定字符:

    [abc] 匹配abc中的一个,[^a]  匹配除了a以外的一个字符,[0-9] 匹配0到9中的一个

    s 匹配空白字符  S 匹配非空白字符 

    w 匹配单词字符  W 匹配非单词字符

    [u4E00-u9FA5] 匹配汉字:

    line = "abcad大家下午好"
    regex_str = ".*?([u4E00-u9FA5].*)"
    match_obj = re.match(regex_str,line)
    print(match_obj.group(1))
    
    result:
    大家下午好

    d 匹配数字

  • 相关阅读:
    BZOJ2821 作诗(Poetize) 【分块】
    BZOJ2724 蒲公英 【分块】
    Codeforces 17E Palisection 【Manacher】
    BZOJ2565 最长双回文串 【Manacher】
    Codeforces 25E Test 【Hash】
    CODEVS3013 单词背诵 【Hash】【MAP】
    HDU2825 Wireless Password 【AC自动机】【状压DP】
    HDU2896 病毒侵袭 【AC自动机】
    HDU3065 病毒侵袭持续中【AC自动机】
    HDU2222 Keywords Search 【AC自动机】
  • 原文地址:https://www.cnblogs.com/laonicc/p/7406030.html
Copyright © 2011-2022 走看看