1. 背景:(对程序的伤害)
  1. #__author : 'liuyang'
  2. #date : 2019/3/21 0021 上午 10:34
  3. #模块和功能之间的关系
  4. #先有的功能
  5.  
  6. #正则表达式
  7. #time模块 是用来操作时间的
  8. #re 模块 是用来操作正则表达式的
  9.  
  10. #什么是‘正则’?
  11. #能做什么事?
  12.  
  13. #在注册 页输入的内容 是否合法?
  14. #不检测也 , 不合法(不存在手机号) ,发不出去
  15.  
  16. #send_msg('msg',1345433191) #发过去 每次都发 占资源 对程序非常大的伤害
  17. #一秒点 500下 ,每次都发 太伤害 应用
  18. #所以检测
  19.  
  20. #11位 ,1 开头 ,全数字, 13,14,15,16,17,18,19
  21. #从一个大文件中 将多有的手机号码都取出来
  22.  
  23. # 正则表达式
  24. #字符串的规则
  25. #给字符串定义一个规则来 帮助我们:
  26. #1 .检测某一段字符串 是否符合规则
  27. #2. 从一大段 文字中将符合规则的匹配出来
  28. #爬虫
  29. # 只和字符串相关
  30.  
  31. #规则
  32. #元字符
  33. #量词
  34. #简单的字符串的筛选和匹配

正则表达式的应用:   网站(http://tool.chinaz.com/regex)

  1. # 场景一 :检测某一段字符串是否符合规则
    # 场景二 :从某一段文字中找到符合规则的内容

一元字符:字符组与非字符组

  1. 字符组[]描述的是一个字符位置上的内容规则
  2. #[012345]
  3. #[0-5]
  4. #[0-9]
  5. #[9-0] 不能从大到小 来规定范围
  6. #字符组内所有的范围都是根据ascii 码匹配 一
  7. # 个字符组代表一个位置 多个多个位置
  8.  
  9. 非字符组 [^123]
  10. #^hello 能匹配到整行的开始 第一个位置
  11. # hello$ 结束符

一些规则:

  1. #【0-9】== \d 只能匹配 0-9 匹配任意一个数字 digit
  2. #【A-Z0-9a-z_】\w 字母数字下划线
  3.  
  4. # \n 匹配回车 换行
  5. # \t 匹配制表符 table
  6. # 空格 本身匹配 空格
  7. # \s 匹配所有的制表符
  8. # 规则+\b 匹配一个单词的边界
  9.  
  10. # 反义词
  11. #\W 除了字母数字下划线之外的
  12. #\D 除了数字之外的所有
  13. #\S 除了空白之外的所有
  14.  
  15. #. 匹配换行符 之外的 所有字符
  16.  
  17. #\d \w \s (\n \t)
  18. #\D \W \S
  19.  
  20. # 匹配所有:[\D\d] [\W\w][\S\s]

开始和结束    分组和或

  1. ^hello$
  2. # ^hello....$ 这样的话 可以后面的有 4个
  3. #a^hello hello$b 错误用法✖
  4. # ^永远在一个规则的最前面 ^和$ 规定了这个字符串的长度
  5. #^\d\d\d\d\d\d\d\d\d\d\d$
  6.  
  7. 分组和
  8. #| 表示 或 123|456 两边的都匹配一条结果
  9. # www.baidu.com # www\.oldboy\.com # 转移一下 否则@也可以被匹配到
  10. # www.(baidu|oldboy).com
  1. #元字符总结
  1. # \d 数字 \w 字符数字下划线 \s 空 \n换行 \t table
  2. # 与上相反:\D     \W       \S (\b 匹配一个单词的结尾)
  3. # [] , [^] #字符组 或非字符组  
  4. #^ $    #开始 结束 弄上结束符 便只检测一个了
  5. #|   # 或永远把相对长的规则放在左侧 先匹配
  6. #()    分组
  7. # .    除了换行符
  1. 二.量词
  1. \d{n} 表示出现n
  2. {n,} 表示至少出现n
  3. {nm} 表示出现n-m
  4. ? 表示匹配 0 1
  5. + 表示匹配 1
  6. * 表示匹配 0 + + = *
  1. 元字符 量词
    匹配一个字符的内容 表示匹配的数量
  1. # 匹配整数
  2. # [1-9]\d* 可以匹配一次和多次 |0 在加上0
  3. # 01111什么的排除
  4.  
  5. # 匹配小数 +的意义 小数点前面 有1位
  6. # \d+\.\d+
  7.  
  8. # 匹配一个整数或者小数
  9. # \d+\.\d+|([1-9]\d*|0)
  10. #\d+\.?\d* #\d + #必须有整数 \.?#可以存在可不 \d * 必须有
  11. # \d+(\.\d*)? # 分组 要不不出现 或者都出现
  1. # ^ $
    # 海.
    # ^海
    # ^海.$ 只能匹配两个
    # 海$
  2.  
  3. # 在量词范围内尽可能多的匹配 ---贪婪匹配
    # 李.{1,3}李姐和李大打得大和李三
    # 李姐和李
    # 李三
    # [\d] [\d]+ 123dada1 4 和 2
  1. 匹配身份证号码
  1. # 15 位 首位不能为0
  2. # 18位 首位 不能为0 末尾可能是x 和 数字
  3. # ^[1-9]\d{14}$
  4. # (^[1-9]\d{16}(x|\d)$)
  5. # 合起来
  6. # ^([1-9]\d{16}(x|\d)|[1-9]\d{14})$
  7. # ^[1-9]\d{14}(\d{2}[\dx])?$

三.转义

  1. # \\\\n
  2. # s = '\\n'
  3.  
  4. #转义
  5. #在测试的网页上写的是什么 就直接复制过来
  6. #然后在字符串 外面加上一个r
  7. # r'\\n' --> r'\n'
  8.  
  9. # t't'
  10. # \t \本身具有转义作用 相当于改变了本来面目
  11. # \\ \ 本身具有转义作用 相当于转义了 转义的特殊作用
  12. # 特殊字符的 才会匹配 \n \t

惰性匹配

  1. # 惰性匹配
  2. #x需要我们自己设置的,尽可能少的匹配
  3. # a.* 以a开头任意一个字符串 都可以被匹配出来
  4. # a.*? 非贪婪 尽可能少取
  5. # 直接a等于 上
  6. #a.*?x 遇到第一个 x 就停止 a-x
  1. 两种算法 小原理:
  2. 贪婪:
  3. # #回溯算法 a.*x 很开心 匹配到最后了 勤快
  4. # #回溯到 倒数第一个 x 停止了 贪婪匹配 为了简单 也不勤苦
  5. #
  6. 惰性:
  7. # #匹配到第一个a 之后的每一个 值 判断是不是 x 问问.* 是的话就停止

总结:

  1. #正则表达式 :(java, c ,python) 都可以用没有关系和py
  2. #检测字符串是否符合规则
  3. #从一大串文字中找到符合规则的
  4. #元字符
  5. # 。。。
  6. #量词
  7. # 。。。
  8. #转义符
  9. #\n 换行
  10. #\\n \n
  11. #r'\\n' \n
  12. #惰性特点 量词?x 少匹配
  13. #贪婪匹配 元字符量词

作业:

  1. # 1.hashilib 模块 写函数 检验两个文件是否内容相同
  2. #如果这两个文件很大(可能生成器)
  3. #2 . hashlib 做一个密文存储密码的注册 登录程序
  4. #3 . 拼手气发红包 发多少钱 多少个 随机数
  5. #200 50 150 第二个人为0
  6. #每一个取多少钱 概率是相同的
  7. #4 os 模块 (9期师兄面试原题)(可能递归)
  8. #1.这个文件夹里都是文件
  9. #2.这个文件夹里很多文件夹
  10. # 考文件夹的总大小
  11. #5.计算当前月的1号的时间戳时间

python学习 day16 (3月21日)----(正则)的更多相关文章

  1. Python 学习日志9月21日

    9月21日 周四 今天是个特殊的日子吗,总感觉9月21这个日子听着怪怪的. 今天早晨看<Head First HTML and CSS>第13章节“表格和更多列表”,内容不多,看完并做了详 ...

  2. Python 学习日志9月20日

    9月20日 周三 多大年龄了,还活得像个小孩.——急什么,人生又不长. 你习惯了思考宇宙星辰,一百年真的不长,一生也就不那么长,许多人的价值观念你也就无法理解.同样,许多人也无法理解你的价值观念,感兴 ...

  3. Python 学习日志9月19日

    9月19日 周二 今天是普通的一天,昨天也是普通的一天,刚才我差点忘记写日志,突然想起来有个事情没做,回来写. 今天早晨学习<Head First HTML and CSS>第十一章节“布 ...

  4. Python学习日志9月17日 一周总结

    周一,9月11日 这天写的是过去一周的周总结,我从中找出当天的内容. 这天早晨给电脑折腾装机,早晨基本上没有学习,休息了一个早晨. 下午写的上周总结,完事做mooc爬虫课的作业,<Think P ...

  5. Python学习日志9月13日

    昨天的学习日志没有写,乱忙了一整天,政治电脑. 好奇心重,想要给电脑装上传说中LInux操作系统,各种小问题折腾到半夜,今天又折腾到晚上才真正的装上系统. 可是装上系统后又发现各种的不好用.虽然界面比 ...

  6. Python学习日志9月16日

    刚才我差点睡着了,差资料的时候太费神,有些累. 今天早晨学习了<head first HTML and CSS>,今天把昨天没看了的关于字体和颜色的一章节看完了,真长.我详细的做了笔记,并 ...

  7. python学习 day19 (3月26日)----(对象组合)

    深谙:非常透彻地了解:熟悉内中情形.谙,读作‘ān’ 熟悉. 1.面向对象作用:规划了代码中的函数处理的是哪一类问题 解决了传参的问题 方便扩展 方便重用 2.类的定义和使用类当中有哪些成员 ''' ...

  8. Python学习日志9月15日

    一周就要过去了,而我跟一周以前没什么区别.回想一下,我这周做了什么事情呢.恍然若失.这周的精力都浪费在很多不必要的事情上了.学过一片古文,讲后羿学射箭,他有一个同学跟他一样聪明,在一起学习.后羿呢,专 ...

  9. Python学习日志9月14日

    今天早晨又没有专心致志的学习,我感觉我可能是累了,需要减轻学习的程度来调整一下咯.这几天装电脑弄的昏天暗地的,身体有点吃不消了.时间真是神奇的魔法,这半个月来,每隔几天都有想要改变策略的想法.今天早晨 ...

随机推荐

  1. 关于CDh5.13.1 HDFS启用HA(High Availability)注意事情--(JournalNode 只有一个编辑路径)

    原因为:主机名不能为域名.更换成hadoop64 这种解决.

  2. 数位dp poj1850

    题目链接:https://vjudge.net/problem/POJ-1850 这题我用的是数位dp,刚刚看了一下别人用排列组合,我脑子不行,想不出来. 在这题里面我把a看成1,其他的依次递增,如果 ...

  3. TOJ 2130: Permutation Recovery(思维+vector的使用)

    传送门:http://acm.tzc.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=2130 时间限制(普通/Java): ...

  4. [剑指Offer]59-队列的最大值(题目二待补)

    题目一:滑动窗口的最大值 题目链接 https://www.nowcoder.com/practice/1624bc35a45c42c0bc17d17fa0cba788?tpId=13&tqI ...

  5. rviz1

    msckf_vio ####查看topic列表:wj@wj-Inspiron-5437:~$ rostopic list/benchmark_publisher/path/cam0/image_raw ...

  6. 四元数运动学笔记(5)IMU驱动的运动误差方程

    1.扩展卡尔曼滤波EKF1.1线性化卡尔曼滤波1.2偏差微分方程的推导1.3线性化卡尔曼滤波的流程1.4 离散EKF2.误差状态的运动方程2.1连续时间的IMU系统动态方程2.1.1相关变量2.1.2 ...

  7. centos实现两种秒级任务的简单方法

    1.通过写shell脚本,死循环,守护进程运行 > vi /data/sec.sh #!/bin/bash while true do #写上自已的命令 echo "hello wor ...

  8. <history> 特别报道:Google离职富翁们都在干什么?

    特别报道:Google离职富翁们都在干什么? 时间:2008-01-23 10:16:47作者:CNET科技资讯网 本文关键词:Google CNET科技资讯网1月23日国际报道 假如你拥有1千万或1 ...

  9. bootstrap切换按钮点击后显示的颜色

    点击按钮后将按钮类库切换为值为btn-success ·· test ·· jquery code ·· $(".tag-checkbox").toggleClass(" ...

  10. 函数的动态参数与命名空间 day10

    一.动态参数(不定长参数)def func(*args): 形参: 3种 动态参数 args元组,他包含了你所有的位置参数. *args 动态参数,不定长参数 **kwargs 他包含了关键字动态参数 ...