zoukankan      html  css  js  c++  java
  • python基础之正则表达式 re模块

    内容梗概:
    1. 正则表达式
    2. re模块的使⽤
    3. 一堆练习
    正则表达式是对字符串串操作的一种逻辑公式. 我们一般使用正则表达式对字符串进行匹配和过滤.
    使用正则的优缺点:
    优点: 灵活,功能性强,逻辑性强.
    缺点: 上手难.一旦上手,会爱上这个东西
    正则表达式由普通字符和元字符组成. 普通字符包含大小写字母,数字.
    在匹配普通字符的时候我们直接写就可以了
    元字符(重点): 元字符才是正则表达式的灵魂. 元字符中的内容太多了了, 在这⾥里里我们只介绍⼀一些常⽤用的.
    1. 字符组
    字符组很简单⽤用[]括起来. 在[]中出现的内容会被匹配. 例例如:[abc] 匹配a或b或c
    如果字符组中的内容过多还可以使⽤用- , 例例如: [a-z] 匹配a到z之间的所有字⺟母 [0-9]
    匹配所有阿拉伯数字
    2. 简单元字符
    .常用的基本的元字符
    . 匹配除换行符以外的任意字符
    w 匹配字母或数字或下划线
    s 匹配任意的空⽩白符
    d 匹配数字
    匹配一个换⾏行行符
    匹配一个制表符
     匹配一个单词的结尾
    ^ 匹配字符串的开始
    $ 匹配字符串的结尾
    W 匹配非字母或数字或下划线
    D 匹配非数字
    S 匹配非空白符
    a|b 匹配字符a或字符b
    () 匹配括号内的表达式,也表示一个组
    [...] 匹配字符组中的字符
    [^...] 匹配除了字符组中字符的所有字符

    3. 量词
    我们到目前匹配的所有内容都是单一文字符号. 那如何一次性匹配很多个字符呢,
    常用量词
    * 重复零次或更多次
    + 重复一次或更多次
    ? 重复零次或一次
    {n} 重复n次
    {n,} 重复n次或更更多次
    {n,m} 重复n到m次

    4. 惰性匹配和贪婪匹配
    在量词中的*, +,{} 都属于贪婪匹配. 就是尽可能多的匹配到结果.
    str: 麻花藤昨天让英雄联盟关服了了
    reg: 麻花藤.*
    此时匹配的是整句句话

    在使⽤用.*后⾯面如果加了? 则是尽可能的少匹配. 表⽰示惰性匹配
    str: 麻花藤昨天让英雄联盟关服了了
    reg: 麻花藤.*?
    此时匹配的是 麻花藤


    2. re模块
    re模块是python提供的一套关于处理理正则表达式的模块. 核心功能有四个:
    1.re.findall()
    2.re.finditer()
    3.re.search()
    4.re.match()
    import re
    lis = re.findall("w+","alex is a bitch")
    print(lis)
    lis = re.finditer("w+","alex is a bitch")
    for el in lis:
    print(el.group())
    a = re.search("e","alex is a bitch").group()
    print(a)

    c = re.match("alex","alex is a bitch").group()
    print(c)

    注意的点:
    lis = re.findall("www.(baidu|oldboy).com", "www.baidu.com")
    print(lis) #结果为baidu

    lis = re.findall("www.(?:baidu|oldboy).com", "www.baidu.com")
    print(lis) #结果为"www.baidu.com"

    5.其他模块
    lis = re.split("(is)","alex is abs sb and a big sb")
    print(lis)

    lis = re.sub("sb","goodman","alex is abs sb and a big sb")
    print(lis)

    lis = re.subn("sb","goodman","alex is abs sb and a big sb")
    # print(lis)

    特别注意:compile 爬虫的时候用的会比较多,要掌握用法
    obj = re.compile("sb")
    lis = obj.sub("goodman","alex is a sb and a big sb")
    print(lis)

    obj = re.compile("sb")
    # lis = obj.split("alex is a sb and a big sb")
    # print(lis)

    obj = re.compile(r"alex(?P<ID>d+)a")
    lis = obj.search("alex250a260sb300anda125big852sb")
    print(lis.group())
    print(lis.group("ID"))
  • 相关阅读:
    db2缓冲池调优
    linux下安装rpm出现error: Failed dependencies
    linux下挂载磁盘
    db2 常见错误以及解决方案[ErrorCode SQLState]
    db2数据库表操作错误SQL0668N Operation not allowed for reason code "1" on table "表". SQLSTATE=57016的解决方法
    db2用户权限赋值
    db2查看当前用户模式及当前用户的权限
    loadrunner常用函数整理
    书上的脚本案例
    hdu 1711---KMP
  • 原文地址:https://www.cnblogs.com/Mixtea/p/9971954.html
Copyright © 2011-2022 走看看