python学习 day16 (3月21日)----(正则)
- 背景:(对程序的伤害)
- #__author : 'liuyang'
- #date : 2019/3/21 0021 上午 10:34
- #模块和功能之间的关系
- #先有的功能
- #正则表达式
- #time模块 是用来操作时间的
- #re 模块 是用来操作正则表达式的
- #什么是‘正则’?
- #能做什么事?
- #在注册 页输入的内容 是否合法?
- #不检测也 , 不合法(不存在手机号) ,发不出去
- #send_msg('msg',1345433191) #发过去 每次都发 占资源 对程序非常大的伤害
- #一秒点 500下 ,每次都发 太伤害 应用
- #所以检测
- #11位 ,1 开头 ,全数字, 13,14,15,16,17,18,19
- #从一个大文件中 将多有的手机号码都取出来
- # 正则表达式
- #字符串的规则
- #给字符串定义一个规则来 帮助我们:
- #1 .检测某一段字符串 是否符合规则
- #2. 从一大段 文字中将符合规则的匹配出来
- #爬虫
- # 只和字符串相关
- #规则
- #元字符
- #量词
- #简单的字符串的筛选和匹配
正则表达式的应用: 网站(http://tool.chinaz.com/regex)
- # 场景一 :检测某一段字符串是否符合规则
# 场景二 :从某一段文字中找到符合规则的内容
一元字符:字符组与非字符组
- 字符组[]描述的是一个字符位置上的内容规则
- #[012345]
- #[0-5]
- #[0-9]
- #[9-0] 不能从大到小 来规定范围
- #字符组内所有的范围都是根据ascii 码匹配 一
- # 个字符组代表一个位置 多个多个位置
- 非字符组 [^123]
- #^hello 能匹配到整行的开始 第一个位置
- # hello$ 结束符
一些规则:
- #【0-9】== \d 只能匹配 0-9 匹配任意一个数字 digit
- #【A-Z0-9a-z_】\w 字母数字下划线
- # \n 匹配回车 换行
- # \t 匹配制表符 table
- # 空格 本身匹配 空格
- # \s 匹配所有的制表符
- # 规则+\b 匹配一个单词的边界
- # 反义词
- #\W 除了字母数字下划线之外的
- #\D 除了数字之外的所有
- #\S 除了空白之外的所有
- #. 匹配换行符 之外的 所有字符
- #\d \w \s (\n \t)
- #\D \W \S
- # 匹配所有:[\D\d] [\W\w][\S\s]
开始和结束 分组和或
- ^hello$
- # ^hello....$ 这样的话 可以后面的有 4个
- #a^hello hello$b 错误用法✖
- # ^永远在一个规则的最前面 ^和$ 规定了这个字符串的长度
- #^\d\d\d\d\d\d\d\d\d\d\d$
- 分组和 或
- #| 表示 或 123|456 两边的都匹配一条结果
- # www.baidu.com # www\.oldboy\.com # 转移一下 否则@也可以被匹配到
- # www.(baidu|oldboy).com
- #元字符总结
- # \d 数字 \w 字符数字下划线 \s 空 \n换行 \t table
- # 与上相反:\D \W \S (\b 匹配一个单词的结尾)
- # [] , [^] #字符组 或非字符组
- #^ $ #开始 结束 弄上结束符 便只检测一个了
- #| # 或永远把相对长的规则放在左侧 先匹配
- #() 分组
- # . 除了换行符
- 二.量词
- \d{n} 表示出现n次
- {n,} 表示至少出现n次
- {n,m} 表示出现n-m次
- ? 表示匹配 0 次 或 1 次
- + 表示匹配 1 次 或 多 次
- * 表示匹配 0 次 或 多 次 ? + + = *
- 元字符 量词
匹配一个字符的内容 表示匹配的数量
- # 匹配整数
- # [1-9]\d* 可以匹配一次和多次 |0 在加上0
- # 01111什么的排除
- # 匹配小数 +的意义 小数点前面 有1位
- # \d+\.\d+
- # 匹配一个整数或者小数
- # \d+\.\d+|([1-9]\d*|0)
- #\d+\.?\d* #\d + #必须有整数 \.?#可以存在可不 \d * 必须有
- # \d+(\.\d*)? # 分组 要不不出现 或者都出现
- # ^ $
# 海.
# ^海
# ^海.$ 只能匹配两个
# 海$- # 在量词范围内尽可能多的匹配 ---贪婪匹配
# 李.{1,3}李姐和李大打得大和李三
# 李姐和李
# 李三
# [\d] [\d]+ 123dada1 4 和 2
- 匹配身份证号码
- # 15 位 首位不能为0
- # 18位 首位 不能为0 末尾可能是x 和 数字
- # ^[1-9]\d{14}$
- # (^[1-9]\d{16}(x|\d)$)
- # 合起来
- # ^([1-9]\d{16}(x|\d)|[1-9]\d{14})$
- # ^[1-9]\d{14}(\d{2}[\dx])?$
三.转义
- # \\\\n
- # s = '\\n'
- #转义
- #在测试的网页上写的是什么 就直接复制过来
- #然后在字符串 外面加上一个r
- # r'\\n' --> r'\n'
- # t't'
- # \t \本身具有转义作用 相当于改变了本来面目
- # \\ \ 本身具有转义作用 相当于转义了 转义的特殊作用
- # 特殊字符的 才会匹配 \n \t
惰性匹配
- # 惰性匹配
- #x需要我们自己设置的,尽可能少的匹配
- # a.* 以a开头任意一个字符串 都可以被匹配出来
- # a.*? 非贪婪 尽可能少取
- # 直接a等于 上
- #a.*?x 遇到第一个 x 就停止 a-x
- 两种算法 小原理:
- 贪婪:
- # #回溯算法 a.*x 很开心 匹配到最后了 勤快
- # #回溯到 倒数第一个 x 停止了 贪婪匹配 为了简单 也不勤苦
- #
- 惰性:
- # #匹配到第一个a 之后的每一个 值 判断是不是 x 问问.* 是的话就停止
总结:
- #正则表达式 :(java, c ,python) 都可以用没有关系和py
- #检测字符串是否符合规则
- #从一大串文字中找到符合规则的
- #元字符
- # 。。。
- #量词
- # 。。。
- #转义符
- #\n 换行
- #\\n \n
- #r'\\n' \n
- #惰性特点 量词?x 少匹配
- #贪婪匹配 元字符量词
作业:
- # 1.hashilib 模块 写函数 检验两个文件是否内容相同
- #如果这两个文件很大(可能生成器)
- #2 . hashlib 做一个密文存储密码的注册 登录程序
- #3 . 拼手气发红包 发多少钱 多少个 随机数
- #200 50 150 第二个人为0
- #每一个取多少钱 概率是相同的
- #4 os 模块 (9期师兄面试原题)(可能递归)
- #1.这个文件夹里都是文件
- #2.这个文件夹里很多文件夹
- # 考文件夹的总大小
- #5.计算当前月的1号的时间戳时间
python学习 day16 (3月21日)----(正则)的更多相关文章
- Python 学习日志9月21日
9月21日 周四 今天是个特殊的日子吗,总感觉9月21这个日子听着怪怪的. 今天早晨看<Head First HTML and CSS>第13章节“表格和更多列表”,内容不多,看完并做了详 ...
- Python 学习日志9月20日
9月20日 周三 多大年龄了,还活得像个小孩.——急什么,人生又不长. 你习惯了思考宇宙星辰,一百年真的不长,一生也就不那么长,许多人的价值观念你也就无法理解.同样,许多人也无法理解你的价值观念,感兴 ...
- Python 学习日志9月19日
9月19日 周二 今天是普通的一天,昨天也是普通的一天,刚才我差点忘记写日志,突然想起来有个事情没做,回来写. 今天早晨学习<Head First HTML and CSS>第十一章节“布 ...
- Python学习日志9月17日 一周总结
周一,9月11日 这天写的是过去一周的周总结,我从中找出当天的内容. 这天早晨给电脑折腾装机,早晨基本上没有学习,休息了一个早晨. 下午写的上周总结,完事做mooc爬虫课的作业,<Think P ...
- Python学习日志9月13日
昨天的学习日志没有写,乱忙了一整天,政治电脑. 好奇心重,想要给电脑装上传说中LInux操作系统,各种小问题折腾到半夜,今天又折腾到晚上才真正的装上系统. 可是装上系统后又发现各种的不好用.虽然界面比 ...
- Python学习日志9月16日
刚才我差点睡着了,差资料的时候太费神,有些累. 今天早晨学习了<head first HTML and CSS>,今天把昨天没看了的关于字体和颜色的一章节看完了,真长.我详细的做了笔记,并 ...
- python学习 day19 (3月26日)----(对象组合)
深谙:非常透彻地了解:熟悉内中情形.谙,读作‘ān’ 熟悉. 1.面向对象作用:规划了代码中的函数处理的是哪一类问题 解决了传参的问题 方便扩展 方便重用 2.类的定义和使用类当中有哪些成员 ''' ...
- Python学习日志9月15日
一周就要过去了,而我跟一周以前没什么区别.回想一下,我这周做了什么事情呢.恍然若失.这周的精力都浪费在很多不必要的事情上了.学过一片古文,讲后羿学射箭,他有一个同学跟他一样聪明,在一起学习.后羿呢,专 ...
- Python学习日志9月14日
今天早晨又没有专心致志的学习,我感觉我可能是累了,需要减轻学习的程度来调整一下咯.这几天装电脑弄的昏天暗地的,身体有点吃不消了.时间真是神奇的魔法,这半个月来,每隔几天都有想要改变策略的想法.今天早晨 ...
随机推荐
- 关于CDh5.13.1 HDFS启用HA(High Availability)注意事情--(JournalNode 只有一个编辑路径)
原因为:主机名不能为域名.更换成hadoop64 这种解决.
- 数位dp poj1850
题目链接:https://vjudge.net/problem/POJ-1850 这题我用的是数位dp,刚刚看了一下别人用排列组合,我脑子不行,想不出来. 在这题里面我把a看成1,其他的依次递增,如果 ...
- TOJ 2130: Permutation Recovery(思维+vector的使用)
传送门:http://acm.tzc.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=2130 时间限制(普通/Java): ...
- [剑指Offer]59-队列的最大值(题目二待补)
题目一:滑动窗口的最大值 题目链接 https://www.nowcoder.com/practice/1624bc35a45c42c0bc17d17fa0cba788?tpId=13&tqI ...
- rviz1
msckf_vio ####查看topic列表:wj@wj-Inspiron-5437:~$ rostopic list/benchmark_publisher/path/cam0/image_raw ...
- 四元数运动学笔记(5)IMU驱动的运动误差方程
1.扩展卡尔曼滤波EKF1.1线性化卡尔曼滤波1.2偏差微分方程的推导1.3线性化卡尔曼滤波的流程1.4 离散EKF2.误差状态的运动方程2.1连续时间的IMU系统动态方程2.1.1相关变量2.1.2 ...
- centos实现两种秒级任务的简单方法
1.通过写shell脚本,死循环,守护进程运行 > vi /data/sec.sh #!/bin/bash while true do #写上自已的命令 echo "hello wor ...
- <history> 特别报道:Google离职富翁们都在干什么?
特别报道:Google离职富翁们都在干什么? 时间:2008-01-23 10:16:47作者:CNET科技资讯网 本文关键词:Google CNET科技资讯网1月23日国际报道 假如你拥有1千万或1 ...
- bootstrap切换按钮点击后显示的颜色
点击按钮后将按钮类库切换为值为btn-success ·· test ·· jquery code ·· $(".tag-checkbox").toggleClass(" ...
- 函数的动态参数与命名空间 day10
一.动态参数(不定长参数)def func(*args): 形参: 3种 动态参数 args元组,他包含了你所有的位置参数. *args 动态参数,不定长参数 **kwargs 他包含了关键字动态参数 ...