zoukankan      html  css  js  c++  java
  • day17 正则表达式 小练习 hashlib模块 cmd的部分相关命令行的使用其他相关模块的引用 打印进度条 subprocess模块

    正则表达式(re模块)

     一:什么是正则?

      正则就是用一系列具有特殊含义的符号,组合到一起(称之为正则表达式)来描述字符或者字符串的方法。或者说正则就是用来描述一类事物的规则。

    (在Python中) 它内嵌在Python中,并通过re模块实现。正则表达式模式被编译成一系列的字节码,然后由用C编写的匹配引擎执行。

    生活中处处是正则:

      比如我们描述:4条腿

        你可能会想到的是四条腿的动物或者桌子,椅子等

      继续描述:4条腿,活的,就剩动物这一类了。

    import re
    # print(re.findall('w','ab 12+- *&_')) #匹配字母数字及下划线
    # #                                  w
    # print(re.findall('W','ab 12+- *&_'))  #匹配非字母数字下划线
    # print(re.findall('s','ab 
    1
    2	+- *&_'))  #匹配任意空白字符,等价于[	
    
    f]
    # print(re.findall('S','ab 
    1
    2	+- *&_')) #匹配任意非空字符
    # print(re.findall('d','ab 
    1
    2	+- *&_')) #匹配任意数字,等价于[0-9]
    #                     #                    d
    # print(re.findall('D','ab 
    1
    2	+- *&_')) #匹配任意非数字
    # print(re.findall('w_sb','egon alex_sb123123wxx_sb,lxx_sb'))
    #                                                       w_sb
    # print(re.findall('Aalex','abcalex is salexb')) #匹配字符串开始
    # print(re.findall('Aalex','alex is salexb')) #匹配字符串开始
    # print(re.findall('^alex','alex is salexb')) #匹配字符串的开头
    # print(re.findall('sb','alexsb is sbalexbsb')) #匹配字符串结束,如果是存在换行,只匹配到换行前的结束字符串
    # print(re.findall('sb$','alexsb is sbalexbsb')) #匹配字符串的末尾
    #                                           sb
    # print(re.findall('^ebn$','ebn1'))   #正着找是他,倒着找也是他
    #                           ebn
    # print(re.findall('a
    c','a
    c a	c a1c'))#匹配一个换行符
    
    # 重复匹配:
    #.   ?   *   +  {m,n}  .*  .*?
    #1、.:代表除了换行符外的任意一个字符
    # print(re.findall('a.c','abc a1c aAc aaaaaca
    c'))
    #                                           a.c
    # print(re.findall('a.c','abc a1c aAc aaaaaca
    c',re.DOTALL))  #re.DOTALL 有了这个以后.也能匹配换行符
    
    #2、?:代表左边那一个字符重复0次或1次
    # print(re.findall('ab?','a ab abb abbb abbbb abbbb'))
    #                                      ab?
    
    #3、*:代表左边那一个字符出现0次或无穷次
    # print(re.findall('ab*','a ab abb abbb abbbb abbbb a1bbbbbbb'))
    #                                                   ab*
    
    #4、+ :代表左边那一个字符出现1次或无穷次
    # print(re.findall('ab+','a ab abb abbb abbbb abbbb a1bbbbbbb'))
    #                                                    ab+
    
    #5、{m,n}:代表左边那一个字符出现m次到n次
    # print(re.findall('ab?','a ab abb abbb abbbb abbbb'))
    # print(re.findall('ab{0,1}','a ab abb abbb abbbb abbbb'))
    
    # print(re.findall('ab*','a ab abb abbb abbbb abbbb a1bbbbbbb'))
    # print(re.findall('ab{0,}','a ab abb abbb abbbb abbbb a1bbbbbbb'))
    
    # print(re.findall('ab+','a ab abb abbb abbbb abbbb a1bbbbbbb'))
    # print(re.findall('ab{1,}','a ab abb abbb abbbb abbbb a1bbbbbbb'))
    
    # print(re.findall('ab{1,3}','a ab abb abbb abbbb abbbb a1bbbbbbb'))
    
    #6、.*:匹配任意长度,任意的字符=====》贪婪匹配   #指的是从没有到什么都有
    # print(re.findall('a.*c','ac a123c aaaac a *123)()c asdfasfdsadf'))
    #                        a.*c
    
    #7、.*?:非贪婪匹配
    # print(re.findall('a.*?c','a123c456c'))
    
    # ():分组
    # print(re.findall('(alex)_sb','alex_sb asdfsafdafdaalex_sb')) #只留括号内的
    
    #                            (alex)_sb
    
    # print(re.findall(
    #     'href="(.*?)"',
    #     '<li><a id="blog_nav_sitehome" class="menu" href="http://www.cnblogs.com/">博客园</a></li>')
    # )
    # <li><a id="blog_nav_sitehome" class="menu" href="http://www.cnblogs.com/">博客园</a></li>
    #                                           href=".*?"
    
    
    # []:匹配一个指定范围内的字符(这一个字符来自于括号内定义的)
    # print(re.findall('a[0-9][0-9]c','a1c a+c a2c a9c a11c a-c acc aAc'))
    
    #当-需要被当中普通符号匹配时,只能放到[]的最左边或最 右边
    # print(re.findall('a[-+*]c','a1c a+c a2c a9c a*c a11c a-c acc aAc'))
    
    # print(re.findall('a[a-zA-Z]c','a1c a+c a2c a9c a*c a11c a-c acc aAc'))
    
    # []内的^代表取反的意思
    # print(re.findall('a[^a-zA-Z]c','a c a1c a+c a2c a9c a*c a11c a-c acc aAc'))
    # print(re.findall('a[^0-9]c','a c a1c a+c a2c a9c a*c a11c a-c acc aAc'))
    
    # print(re.findall('([a-z]+)_sb','egon alex_sb123123wxxxxxxxxxxxxx_sb,lxx_sb'))
    #                                                [a-z]+_sb
    
    # | :或者的意思
    # print(re.findall('compan(ies|y)','Too many companies have gone bankrupt, and the next one is my company'))
    
    # (?:):代表取匹配成功的所有内容,而不仅仅只是括号内的内容
    # print(re.findall('compan(?:ies|y)','Too many companies have gone bankrupt, and the next one is my company'))
    
    # print(re.findall('alex|sb','alex sb sadfsadfasdfegon alex sb egon'))
    
    # re模块的其他方法:
    # print(re.findall('alex|sb','123123 alex sb sadfsadfasdfegon alex sb egon'))
    # print(re.search('alex|sb','123213 alex sb sadfsadfasdfegon alex sb egon').group())
    # print(re.search('^alex','123213 alex sb sadfsadfasdfegon alex sb egon'))
    
    # print(re.search('^alex','alex sb sadfsadfasdfegon alex sb egon').group())
    # print(re.match('alex','alex sb sadfsadfasdfegon alex sb egon').group())
    # print(re.match('alex','123213 alex sb sadfsadfasdfegon alex sb egon'))
    
    # info='a:b:c:d'
    # print(info.split(':'))
    # print(re.split(':',info))
    
    # info=r'get :a.txt3333/rwx'
    # print(re.split('[ :\/]',info))
    
    # print('egon is beutifull egon'.replace('egon','EGON',1))
    
    # print(re.sub('(.*?)(egon)(.*?)(egon)(.*?)',r'123EGON5','123 egon is beutifull egon 123'))
    
    #              (123 )(egon)( is beutifull )(egon)( 123)
    
    #123EGON5
    
    # print(re.sub('(lqz)(.*?)(SB)',r'321',r'lqz is SB'))
    # print(re.sub('([a-zA-Z]+)([^a-zA-Z]+)([a-zA-Z]+)([^a-zA-Z]+)([a-zA-Z]+)',r'52341',r'lqzzzz123+ is SB'))
    
    #(lqzzzz)(123+ )(is)( )(SB)
    
    # pattern=re.compile('alex')
    # print(pattern.findall('alex is alex alex'))
    # print(pattern.findall('alexasdfsadfsadfasdfasdfasfd is alex alex'))
    

      

    hashlib模块

    1、什么叫hash:hash是一种算法,该算法接受传入的内容,经过运算得到一串hash值

    2、hash值的特点是:

    2.1只要传入的内容一样,得到的hash值必然一样======>要用明文传输密码文件完整性校验

    2.2不能由hash值反解成内容====》把密码做成hash值,不应该在网络传输明文密码

    2.3只要使用的hash算法不变,无论校验的内容有多大,得到的hash值长度是固定的

    import hashlib
    m=hashlib.md5()
    m.update('hello'.encode('utf-8'))
    m.update('world'.encode('utf-8'))
    m.update('egon'.encode('utf-8'))
    print(m.hexdigest()) #3801fab9b8c8d9fcb481017969843ed5
    
    import hashlib
    m=hashlib.md5()
    m.update('h'.encode('utf-8'))
    m.update('e'.encode('utf-8'))
    m.update('lloworld'.encode('utf-8'))
    m.update('egon'.encode('utf-8'))
    print(m.hexdigest()) #3801fab9b8c8d9fcb481017969843ed5
    # import hashlib
    # m=hashlib.md5()
    # with open(r'D:codeSH_fullstack_s1day18上节课复习','rb') as f:
    #     for line in f:
    #         m.update(line)
    #     hv=m.hexdigest()
    # print(hv) #f2a3a94efd0809e8a9c5ac8794c4bb2d
              #953cd74a08f4fbb7e69a4bda8dfad056     这种方法能保证下载文件的完整性,但是不能保证安全性

    密码加盐

    # import hashlib
    # pwd='alex3714'
    #
    # m=hashlib.md5()
    # m.update('一行白鹭上青天')
    # m.update(pwd.encode('utf-8'))
    # m.update('天'.encode('utf-8'))
    #
    # m.update('小雨一米五'.encode('utf-8'))
    # print(m.hexdigest())
    
    import hashlib
    m=hashlib.md5()
    m.update('helloworld'.encode('utf-8'))
    print(m.hexdigest()) #fc5e038d38a57032085441e7fe7010b0
    
    # m=hashlib.sha256()  #这里的sha256()指的是换一种算法
    # m.update('helloworld'.encode('utf-8'))
    # print(m.hexdigest()) #936a185caaa266bb9cbe981e9e05cb78cd732b0b3280eb944412bb6f8f8f07af
    #
    # m=hashlib.sha512()
    # m.update('helloworld'.encode('utf-8'))
    # print(m.hexdigest()) #1594244d52f2d8c12b142bb61f47bc2eaf503d6d9ca8480cae9fcf112f66e4967dc5e8fa98285e36db8af1b8ffa8b84cb15e0fbcf836c3deb803c13f37659a60
    #越长复杂度越高

    补充模块,htmac模块

    import hmac
    m=hmac.new('天王盖地虎,小鸡炖模块'.encode('utf-8')) #必先预先传一个值
    m.update('alex3814'.encode('utf-8'))
    print(m.hexdigest())

    相关登录注册的hash值的提取不懂问老刘

    cmd的部分相关命令行的使用

    subprocess模块

    configparser模块

    其他相关模块的引用

    打印进度条

  • 相关阅读:
    SELECT IDENT_CURRENT(tableName)和自增长列的纠结
    [置顶]c# 设计模式(1)一 创建型
    我们互联网生活因家庭服务器改变
    互联网创业不妨先放下平台梦
    影响未来的应用ifttt,互联网自主神经系统的又一个有力证据
    什么是ifttt,ifttt怎么玩? ifttt操作体验具体步骤
    杰出企业家的20个好习惯
    折叠分组表格中重用Cell导致的问题
    使用AChartEngine画折线图
    MSSQL获取当前插入的ID号及在高并发的时候处理方式
  • 原文地址:https://www.cnblogs.com/wangmiaolu/p/10065281.html
Copyright © 2011-2022 走看看