zoukankan      html  css  js  c++  java
  • Python学习笔记(3)

    正则:

    使用正则表达式需要引入 re模块 , 使用步骤如下:

    compile(正则,模式)  方法:生成pattern实例;模式可传 re.I 或 re.M 等

    re.I     不区分大小写,忽略大小写

    re.M    多行匹配,影响 ^ 和 $

    import re
    
    #定义正则表达式, 编译成Pattern实例
    p = re.compile('a.b')
    #使用实例,获得匹配结果
    test = re.match(p, 'a3b')
    
    print(test.group(0))   # a3b

    正则表达式字符含义(列举部分,更多查询文档):

     .     表示除了换行符 外的任意字符

         表示转义,改变后面一个字符的原来意义

    *     表示前一个字符可以为0个或者多个

    +    表示前一个字符至少为1个或者多个

    ?   表示前一个字符为0个或者1个

    ^    表示以某个字符开头

    $   表示以某个字符结尾

    {m, n}   表示匹配次数, 表示最少m次。表示最多n次

    []    表示字符集中任意字符 例如 [123456798]

    ()    表示分组, 例如 (abc){2}

    预定义字符集:

    d :    表示 0 ~ 9

    D : 表示除了 0 ~ 9 的所有字符,非数字

    s : 表示任何空白字符

    S :   表示除了空白字符的任意字符

    w :   表示 [0-9A-Za-z]

    W : 表示除了 [0-9A-Za-z]   即特殊字符

    A:   表示以 某个字符开头,等价于 符号  ^

     : 表示以某个

     :表示单词边界

    匹配函数: 

    match(pattern, string)  方法: 从字符串起始位置开始匹配,如果不是起始位置匹配成功的话,返回none ,如果匹配成功,返回Match 对象

    #定义正则表达式, 编译成Pattern实例
    p = re.compile('ab')
    #使用实例,获得匹配结果
    test = re.match(p, 'sabc')
    
    print(test.group())   # none

     search (pattern, string) 方法: 对字符串进行整体匹配,找到第一个匹配的值后返回,后续的不再进行匹配。,返回Match 对象

    #定义正则表达式, 编译成Pattern实例
    p = re.compile('ab')
    
    test = re.search(p, 'sabcabab')
    
    print(test.group())   # ab

     findall(pattern,string):  以列表形式输出所有匹配的字符串,查找全部,返回列表

    import re
    
    #定义正则表达式, 编译成Pattern实例
    p = re.compile('ab',re.M)
    
    print(re.findall(p, 'abcdefgab'))   # ['ab', 'ab']

    finditer(pattern, string):  已迭代器形式返回所有匹配的字符串,查找全部,返回迭代器

    p = re.compile('ab',re.M)
    m = re.finditer(p, 'abcdefgab')
    print(next(m).group())  # ab

    sub(pattern, repl, string, count = 0):   根据正则替换字符串中指定字符 ;   repl 表示替换的新字符,string表示要被替换的字符串, count表示替换的次数,不传默认为 0 ,替换全部

    import re
    
    text = '1a2a3a4a5a6a7a'
    p = re.compile('a')
    new = re.sub(p, '', text)
    print(new)   #132467 

    匹配函数传参:

    pattren 表示匹配的正则表达式  ; 

    string 表示需要匹配的字符串 ; 

    flags 表示标志位,用于控制正则表达式的匹配方式,如 是否区分大小写、多行匹配等;可选

    Match对象方法:

    group()  方法:  返回匹配成功的字符串,不传参或传0 的情况下,返回匹配的所有字符串;当匹配的正则有分组时,依次传参1,2,3输出对应的正则组所匹配的字符

    groups() 方法: 以元组形式返回所匹配的各个字符串,以分组形式, 没有分组的情况下返回()

    start()   方法:  返回开始匹配的字符位置

    end()    方法:   返回结束匹配的字符位置

    span()  方法:   以元组形式同时返回开始匹配和结束匹配的位置

    p = re.compile('ab')
    
    test = re.search(p, 'sabcabab')
    
    print(test.group())   # ab
    print(test.groups())   # ()
    print(test.start())   # 1
    print(test.end())     # 3
    print(test.span())   # (1, 3)
    p = re.compile('(ab)(cd)(ef)')
    
    test = re.search(p, 'abcdefg')
    
    print(test.group())   # abcdef
    print(test.group(1))   # ab
    print(test.group(2))   # cd
    print(test.groups())   # ('ab', 'cd', 'ef')
    不积跬步,无以至千里;不积小流,无以成江海。
  • 相关阅读:
    【Java学习】Intellij IDEA基本配置
    【Java学习】Integer、new Integer() 和 int 比较和相关的面试题
    【Java学习】String[] args和String args[]的区别在哪里?
    【Java学习】包装类
    【Java学习】Java 枚举(enum)
    【Java学习】eclipse与intellij idea的区别
    【Mysql学习】mysql远程连接:ERROR 1130 (HY000): Host '*.*.*.*' is not allowed to connect to this MySQL server解决办法
    【Mysql学习】Mysql安装
    qplot函数用法(转载)
    webservice部署到服务器报错
  • 原文地址:https://www.cnblogs.com/xuezhimin-esage-2020/p/14285054.html
Copyright © 2011-2022 走看看