• Python基础16模块-re模块


    1.正则表达式#^表示在字符串开头匹配,$表示在字符串结尾匹配

    #*匹配0到无穷多个
    #+匹配1到无穷多个
    #?匹配0或者1个
    #{}定义匹配个数{0,}==*,{1,}==+,{0,1}==?,{6}=={1,6}
    #上面的元字符一般都是贪婪匹配,在后面加上?变成惰性匹配
    #[]匹配括号里的字符,只匹配一次,^表示不包含,-表示范围,表示转义字符,其他在中括号里都无特殊意义
    #d 匹配任何十进制的数
    #D 匹配任何非数字字符
    #s 匹配任何空白字符
    #S 匹配任何非空白字符 
    #w 匹配任何字母数字字符
    #W 匹配任何非字母数字字符
    # 匹配一个特殊边界字符,比如空格,#,&
    #?:去匹配优先级
    import re
    ret = re.findall("www.(baidu|163).com","www.baidu.com")
    print(ret)
    ret = re.findall("www.(?:baidu|163).com","www.baidu.com")
    print(ret)
    #注:类似由于在python解释器上会默认转化,这样传到re解释器上就会有差异,所以在re模块下应该变为\b或者用r''

    2.re模块的方法

    #search()匹配一个就返回,返回一个对象,如果匹配不到就不返回,用group()方法调用,如果正则表达式用分组形式如(?p<name>[a-z]+)则可用group(name)取出对应分组匹配的内容
    #match()从开头开始匹配,匹配一个就返回,返回一个对象,同样用group()调用
    #findall()所有符合正则表达式的都匹配,返回一个列表
    #split()用正则表达式匹配的字符串进行分割,如re.split("[ab]","abc")结果为[" "," ","c"]先按照a分割再对结果按照b分割
    #compile()绑定正则表达式
    import re
    com = re.compile("d+")
    print(com.findall("fjsdf123eewfwe564sdf"))
    #结果为:['123', '564']                            
    #finditer()所有符合正则表达式的都匹配,返回一个迭代器
    import re
    ret = re.finditer("d","sdf145dfsdf5456")
    print(next(ret).group())
    print(next(ret).group())
    #结果为1
    #     4
    #sub()将正则表达式匹配的字符串替换成指定字符串如:re.sub("d","A","a12f")结果为"aAAf",默认为全部替换,也可指定替换次数,如:re.sub("d","A","a12f",1)表示只匹配一次,结果为"aA2f"
    #subn()跟sub()功能一样,返回的是一个元组,包含结果跟匹配的次数

      

  • 相关阅读:
    城市的划入划出效果
    文本溢出省略解决笔记css
    长串英文数字强制折行解决办法css
    Poj 2352 Star
    树状数组(Binary Indexed Trees,二分索引树)
    二叉树的层次遍历
    Uva 107 The Cat in the Hat
    Uva 10336 Rank the Languages
    Uva 536 Tree Recovery
    Uva10701 Pre, in and post
  • 原文地址:https://www.cnblogs.com/josie930813/p/9816320.html
Copyright © 2020-2023  润新知