• 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()功能一样,返回的是一个元组,包含结果跟匹配的次数

      

  • 相关阅读:
    Java核心技术Java程序设计
    Mac下查看 Java 安装目录位置和安装数量
    Intellij IDEA快捷键与使用小技巧
    Java 8 新特性 用 Collectors 对 List 去重
    onInterceptTouchEvent()与onTouchEvent()的机制
    Android 开发之多线程处理、Handler
    安卓中使用XmlPullParser解析xml文件
    监控部署nagios+snmp
    阿里RDS数据库 全量备份恢复到本地MYSQL
    20120412
  • 原文地址:https://www.cnblogs.com/josie930813/p/9816320.html
Copyright © 2020-2023  润新知