zoukankan      html  css  js  c++  java
  • learing day 15 (re模块与正则)

    1.正则表达式

      什么是正则? 正则是用一些具有特殊含义的符号组合在一起来描述字符或字符串的方法

      为什么用正则?对字符串进行匹配

    2.常用匹配模式

    # w与W

    1 import re
    2 #w  匹配一个字母数字下划线
    3 print(re.findall('w','hello egon 123')) 
    4 #W 匹配非字母数字下划线
    5 print(re.findall('W','hello egon 123')) 
    View Code

    # s与S

    1 import re
    2 #s 匹配任意空白字符,等价于	(制表符)
    (换行)f
    3 print(re.findall('s','hello  egon  123')) 
    4 #S 匹配任意非空字符
    5 print(re.findall('S','hello  egon  123')) 
    View Code

    # , 与 s

    1 import re
    2 #
     是换行字符
    3 #对  的输出需要进行转义 
    4 #转义  print('\')
    5 print(re.findall('a\\c','ac aac'))
    6 print(re.findall(r'a\c','ac aac'))
    7 #
     	都是空,都可以被s匹配
    8 #	 表示制表符
    9 print(re.findall('s','hello 
     egon 	 123'))
    View Code

    # d 与 D

    1 import re
    2 #d 匹配数字
    3 print(re.findall('d','hello egon 123')) 
    4 #D 匹配非数字
    5 print(re.findall('D','hello egon 123'))
    View Code

    # ^ 与 $

    1 import re
    2 #^ 从开头开始匹配
    3 print(re.findall('^h','hello egon 123')) #['h']
    4 #$ 从末尾开始匹配
    5 print(re.findall('3$','hello egon 123'))
    View Code

    重复匹配  |.|*|?|.*|.*?|+|{n,m}

     1 import re 
     2 # .代表一个字符,该字符可以是除换行符之外的任意字符
     3 # 如果需要匹配换行符则需要加参数 re.DOTALL    
     4 print(re.findall('a.b','a1b'))
     5 #* 代表左边的一个字符出现0次到无穷次
     6 print(re.findall('ab*','bbbbbbb'))
     7 #?  代表左边的一个字符出现0次到1次
     8 print(re.findall('ab?','a'))
     9 #+ 代表左边的一个字符出现1次到无穷次
    10 print(re.findall('ab+','a'))
    11 print(re.findall('ab+','abbb'))
    12 #{n,m} 代表左边的一个字符出现n次到者m次
    13 print(re.findall('ab{2}','abbb')) 
    14 print(re.findall('ab{2,4}','abbb'))
    15 #[^] 取反
    16 #.*默认为贪婪匹配
    17 print(re.findall('a.*b','a1b22222222b'))
    18 #.*?为非贪婪匹配:推荐使用
    19 print(re.findall('a.*?b','a1b22222222b'))
    View Code

    #()分组

    View Code

    3.re模块的使用

      re.DOTALL
        re.I  忽略大小写
        re.M  以 为分隔符,分隔多行
        
        re.search() 匹配成功之后就结束  不会进行下次查找
        re.group()
        re.match('','') == re.search('^','')
        
        res = re.compile()  预制正则表达式
        调用时候:
        print(res.findall())
        print(res.search())
        print(res.match())

    4.hashlib
        哈希(hash)是一种算法
        该算法接受一系列数据,经过运算会得到一个返回值,这个返回值是hsah值
        hash 具备的三大特点:
            1.知道传入的内容一样,那么得到的hash值一定是一样的
            2.只要采用的hash算法固定,无论传入内容多大,hash值的长度是固定的
            3.hash不可逆,不能通过hash值逆推出内容
        为什么要用hash?
            1和2 可以做文件完整性校验
            3加密
            import hashlib
            m = hashlib.md5()
            m.update()传参数
            m.hexdigest() 获取hash值

    学习,学习,学习! 学习是为了更好的未来,不要让别人瞧不起你,加油!!!
  • 相关阅读:
    2、requests练习
    1、接口基础
    9、异常和文件
    宝马5系图片分类下载自动创建文件夹并保存
    opencv操作视频python
    利用协程框架,无界面浏览器爬取上海高院开庭数据
    协程框架
    多线程抓取邮箱
    selenium操作下拉选和网页提示框
    selenium相关导入By、Keys、WebDriverWait、ActionChains,显示等待与隐式等待
  • 原文地址:https://www.cnblogs.com/yangyufeng/p/10077767.html
Copyright © 2011-2022 走看看