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

    import re

    findall 返回的是列表


    大小w:[每个元素都是字符串的形式]
    # w 字母.数字.下划线.中文 ***
    print(re.findall("w","宝元-alex_dsb123日魔吃D烧饼"))
    # w 不是字母.数字.下划线.中文 ***
    print(re.findall("W","宝元-alex_dsb123日魔吃D烧饼"))


    大小d:[每个元素都是字符串的形式]
    # d 匹配数字 ***
    print(re.findall("d","十10⑩"))
    #D 匹配非数字 ***
    print(re.findall("D","十10⑩"))


    判断str的开头结尾,查找不到,返回空列表
    # 以什么开头 ***
    print(re.findall("^a","alex"))
    # 以什么结尾 ***
    print(re.findall("x$","alex"))


    [每个元素都是字符串的形式]
    # . 匹配任意一个字符串( 除外),加re.DOTALL可以显示 ***
    print(re.findall("a.c","abc,aec,a c,a,c"))
    print(re.findall("a.c","abc,aec,a c,a,c",re.DOTALL))


    [每个元素都是字符串的形式]
    # 区间
    print(re.findall('[0-9]',"alex123,日魔dsb,小黄人_229")) ***
    print(re.findall('[a-z]',"alex123,日魔DSB,小黄人_229"))
    print(re.findall('[A-Z]',"alex123,日魔DSB,小黄人_229"))
    [0-9] # 取0-9之前的数字
    [^0-9] # 取非 0-9之间的数字
    print(re.findall("[^0-9a-z]","123alex456")) ***


    # 匹配*左侧字符串0次或多次 贪婪匹配 ***
    print(re.findall("a*","alex,aa,aaaa,bbbbaaa,aaabbbaaa"))


    # 匹配左侧字符串一次或多次 贪婪匹配 ***
    print(re.findall("a+","alex,aa,aaaa,bbbbaaa,aaabbbaaa"))


    # 匹配?号左侧0个或1个 非贪婪匹配 ***
    print(re.findall("a?","alex,aa,aaaa,bbbbaaa,aaabbbaaa"))


    # 指定查找的元素个数 ***
    print(re.findall("[0-9]{11}","18612239999,18612239998,136133333323"))
    3~8这个区间
    print(re.findall("a{3,8}","alex,aaaabbbaaaaabbbbbbaaa,aaaaaaaaabb,ccccddddaaaaaaaa"))


    # 分组***
    print(re.findall("<a>(.+)</a>","<a>alex</a> <a>wusir</a>"))
    # 控制贪婪匹配***
    print(re.findall("<a>(.+?)</a>","<a>alex</a> <a>wusir</a>"))

    # '查找的元素' 返回的就是这个元素,查不到返回空列表
    print(re.findall(" ","alex wusir"))
    print(re.findall(" ","alex wusir"))


    print(re.findall("s","alex dsbrimocjb"))# s 匹配空格
    print(re.findall("S","alex dsbrimocjb"))# s 匹配非空格


    面试题:
    # search 和 match 区别
    # search 从任意位置开始查找,查找到结束,没有则返回空列表
    # match 从头开始查看,如果不符合就不继续查找了
    # group()进行查看

    split -- 分割 # [多个分割,需要用列表把分割符号括起来]
    print(re.split("[:;,.!#]","alex:dsb#wusir.djb"))

    sub -- 替换
    s = "alex:dsb#wusir.djb"
    print(re.sub("d","e",s,count=1)) # count 计数,控制替换数量
    print(re.sub("d","e",s)) # 默认全部替换


    compile 定义匹配规则
    s = re.compile("w")
    print(s.findall("alex:dsb#wusir.djb"))


    返回的就是一个迭代器
    s = re.finditer("w","alex:dsb#wusir.djb")
    print(next(s).group())
    print(next(s).group())
    for i in s:
    print(i.group())

    . 没有任意的功能了

    装逼网站(写好的一些正则表达式):http://tool.chinaz.com/regex/

  • 相关阅读:
    TriSun PDF to X v11.0 Build 061
    资源管理器 Q-Dir v8.09
    USB启动盘创建工具 Rufus
    Docker:网络模式详解
    rsync使用实践
    MySQL 8.0 防止暴力破解
    MySQL-8.0.19 优化日志及压测
    MySQL入门篇之mysqldump参数说明
    rest-framework之视图
    rest-framework之权限组件
  • 原文地址:https://www.cnblogs.com/xuyuwei/p/11536694.html
Copyright © 2011-2022 走看看