zoukankan      html  css  js  c++  java
  • re模块元字符

    #元字符在re模块中有特殊意义的字符,有:^ $. * + {} [] () |

    ^$

    #表示开头结尾,注意:[^]表示取反

    #点,表示任意一个字符,包括空格(一个空白字符), (换行符)。但是不能匹配 (换行符)

    *

    #表示前一个字符出现次数任意次,包括零次

    +

    #表示前一个字符出现一次以上

    {N,M}

    #表示前一个字符出现N-M次

    ?

    #表示前面一个字母出现0或1次

    [patten1,patten2]

    #表示匹配patten1或patten2,中间不需要分割符

    #[]还可以取消元字符的特殊意义,但 - ^ 除外

    ##例如:[.*]即是匹配字符 . 或字符 *

    ##例如:[a-z]即是匹配所有小写字母

    ##例如:[^45]即是匹配除了4和除了5,同样不需要分割符

    ##例如:[d]即是匹配所有数字

    ()

    #表示分组,可以与 | 合用,(ab|cd)表示匹配字符 ab 或 字符 cd

    #分组还可以给匹配规则命名,(?P<NAME>patten)表示将规则patten匹配到的内容命名为NAME,在re.search('patten','string').group(*varg)是调用

    ret=re.search('(?P<name>w{3})/(?P<number>d{3})','www.baidu.com/glx/311')
    print(ret.group())
    print(ret.group('name'))
    print(ret.group('number'))
    
    #############
    glx/311
    glx
    311

    #当使用re.findall()方式时,匹配规则中含有()分组,则匹配到的内容会只显示分组中的内容(分组的优先级较高) 

    #使用(?:patten),?: 作用时取消分组的权限

    ret1=re.findall('www.(w+).com','www.baidu.com')
    ret2=re.findall('www.(?:w+).com','www.baidu.com')
    print(ret1)
    print(ret2)
    
    ########
    ['baidu']
    ['www.baidu.com']

    #可以将没有意义的字符表示成有意义的字符,如d,d字符本身是没有意义的,但re模块可将其解释成所有数字

    #还可以取消特殊意义,如.,.(点)字符本身有特殊意义,re模块可以将其解释成字符点

    ##使用 时,需要注意原本使用的内容在python中是否有意义,如,在python中表示退格符,在re模块中表示边界,所以在使用时在规则中要写成 \b 或 r'' ,使得python传入给re模块时时  两个没有意义的字符

    ##在匹配 时,需要使用 \\ ,这样python传给re模块是才能是 \ 两个没有意义的字符,re模块再解释成 单纯的一个字符

    ##匹配出 在显示时,是 ['\']

    ret=re.findall('\\','aac')
    print(ret)
    
    ########
    ['\']

    #所以使用在python中有特殊意义的字符时,需要先取消其特殊意义

  • 相关阅读:
    PHP读取excel中地址实现多文件下载
    PHP中域名绑定
    js生成word中图片处理
    Mysql查询不为null值
    Specified key was too long max key length is 1000 bytes
    无法向Windows服务器复制粘贴文件
    Sql Server Configuration Manager 网络配置为空,没有实例
    The first one
    前端基本知识 防抖、节流,compose 函数,apply,bind,call
    写一个闭包 ,每次调用都加1
  • 原文地址:https://www.cnblogs.com/jianbonet/p/8633790.html
Copyright © 2011-2022 走看看