zoukankan      html  css  js  c++  java
  • Python开发之路

    1.re模块 正则表达式 就是在做模糊匹配

    元字符: .  ^  $  *  + ? {  } [ ] | ( )

    (1)  .  通配符 可代指任何一个符号 除了 换行符之外

    re.findall('c..f','asfgfgcwqfgag') ——>此时找到的就是cwqf

    (2) ^ 开头符 匹配字符串的开头

    re.findall('^a..f','afsfwqrr')——>此时找到的就是afsf

    (3) $ 结尾符 匹配字符串的结尾 要放在第一个参数的末尾

    re.findall('a..r$','gdsgsasxr')——>此时找到的就是asxr

    (4) * 查找出现的重复字符 匹配0到无穷次的内容 属于贪婪匹配

    re.findall('exaf*','fadgalexadfzzzdl') 此时能得到exa

    (5) + 匹配1到无穷次的内容 属于贪婪匹配

    re.findall('exaf+','fadgalexadfzzzdl') 此时不能得到exa,因为至少要有一个f

    (6) ? 匹配0到1次的值

     re.findall('galf?','fadgalexadfzzzdl') 此时输出值为gal

    (7) { }次数可以自己设置

    {0,} 等同于*

    {1,} 等同于+

    {0,1} 等同于?

     re.findall('gale{0,3}','fadgaleexadfzzzdl') 此时输出值为galee

    * + ? 都是贪婪匹配,后面加?可以使其变成惰性匹配

     re.findall('gale+?','fadgaleexadfzzzdl') 此时输出值gale 因为+的范围为1到无穷

    (8) [ ] 字符集 表示或者 [ ]里没有特殊符号 除了三个 1. - 符号 a-z 表示范围a到z  2. ^除去 [^a-z ] 表示除去a到z 3. 转义

     re.findall('www[bai asg]','fadgaleewwwbxawwwidfzzzdl') 此时输出值为wwwb 和 wwwi

    数学运算里取最里层部分:

    re.findall('([^()]*)','45+(2*2+(2-1))') 

    (9) 转义字符

    后面跟元字符去除特殊功能 如  . ?

    d 匹配任何十进制数;它相当于类【0-9】 匹配字符串中所有数字可以用: d+

    D 匹配任何非数字符;它相当于类【^0-9】

    s 匹配任何空白字符;它相当于类【 f v】

    S 匹配任何非空白字符;它相当于类【^ f v】

    w 匹配任何字母数字字符;它相当于类【a-z A-Z 0-9_】

    W 匹配任何非字母数字字符;它相当于类【^a-z A-Z 0-9_】

     匹配任何一个字符边界,比如空格 , & ,#等 因为python解释器原本就有这个转义字符,因此在re模块内调用要在前面加个r,表示raw string 原生字符串

     re.findall(r'a','asgvaag') 拿到a 也可以用re.findall('a\\b','asgvaag') ——>  \ 等于除去的意义 \\ 就等于两个\ 然后传给re模块 再进行转义

    (10) | 管道符 表示或者

    re.findall(r'ac|b','dsgacdgsbg') 输出值为——> ['ac', 'b']

    (11) ()分组符号

    re.search() 找到一个之后就不再找了 用re.search().group()取值 

    (?P<>) 固定分组格式

    re.search('(?P<name>[a-z]+)(?P<age>d+)','chris26joe27lin7').group('age')  此时输出值为26

     分组时内部有优先级,优先处理括号内的值,?:可以去除优先级,如下

    import re
    a = re.findall('www.(baidu|163).com','gadgwww.baidu.comgggw')
    b = re.findall('www.(?:baidu|163).com','gadgwww.baidu.comgggw')
    print(a,b)

    此时输出值为['baidu'] ['www.baidu.com']

    2.re模块下的方法

    (1)re.findall() 输出结果为一个列表

    (2)re.search() 取值用re.search().group() 只匹配一个

    (3)re.match() 只从开头开始匹配

    re.match('d+','24fasd').group() 取出值为24

    (4)re.split()

    re.split('[ |]','asg fs|aa') 匹配由空格和管道符分开的数据 输出值为['asg','fs','aa']

    re.split('[ab]','facbe') 此时输出值为['f','','c','','e']

    (5)re.sub() 替换方法

    re.sub('d+','A','dfg42gdsg31d') 将所有数字换为A 输出值为dfgAfdsgAd

    最后也能加个参数,规定匹配次数

    (6)re.subn() 与sub()差不多 得到的结果会告诉你匹配的次数

    (7)re.compile() 编译 可赋予变量方法和规则 重复使用相同规则时方便

    import re
    com = re.compile('d+')
    a = com.findall('chris25gep29')
    print(a)

    (8)re.finditer() 可将得到的数据封装到一个迭代器内

    import re
    ret = re.finditer('d+','chris26joe27lin7')
    print(next(ret).group())
    print(next(ret).group())

    此时取到两个值26 27

  • 相关阅读:
    说说你对集成测试中自顶向下集成和自底向上集成两个策略的理解,要谈出它们各自的优缺点和主要适应于哪种类型测试;
    通过画因果图来写测试用例的步骤为___、___、___、___及把因果图转换为状态图共五个步骤。&#160;利用因果图生成测试用例的基本步骤是:
    性能测试的流程?
    简述bug的生命周期?
    主键、外键的作用,索引的优点与不足?
    循序渐进VUE+Element 前端应用开发(30)--- ABP后端和Vue+Element前端结合的分页排序处理(转载)
    循序渐进VUE+Element 前端应用开发(31)--- 系统的日志管理,包括登录日志、接口访问日志、实体变化历史日志(转载)
    黑盒测试和白盒测试是软件测试的两种基本方法,请分别说明各自的优点和缺点!     
    如何测试一个纸杯?
    测试计划工作的目的是什么?测试计划文档的内容应该包括什么?其中哪些是最重要的?
  • 原文地址:https://www.cnblogs.com/caixiaowu/p/12333375.html
Copyright © 2011-2022 走看看