2019/10/31 01-正则表达式习题讲解

在这里插入图片描述
re这个库,是一种正在表达式的实现,可以用提供的方法,对字符串进行匹配,替换
常用的方法是match,search,fullmatch,findall(快速提取你想要的数据,立即返回,字符串),finditer(返回一个个match对象,可以提取分组)

match,search,fullmatch会返回一个match对象
finditer返回一个match,有了match就可以提取分组
分组有两种,一种是有名字的,一种是没名字的,都一样,都是分组,所以提供了一个groups,可以从这个方法提取所有分组,也提供了每一个分组的使用方式,group(N),N就是分组号,分组0特殊,是当前match匹配出来是什么
groups所有分组,group 分组
命名分组就是groupdict,分组字典必须有名字,名字从命名分组来,所以有名字的分组才出现在groups里
groupdict只跟命名分组相关

在这里插入图片描述
分组很重要,是常用的方法,通过这个方法可以访问到你想要的的数据
在这里插入图片描述在这里插入图片描述
single看做一行了,全匹配了 .点就是从头到尾
在这里插入图片描述不用单行

在这里插入图片描述
后面非贪婪
在这里插入图片描述
前后都非贪婪,第一行的h就非贪婪取一个
在这里插入图片描述
\w就找出这些东西来
在这里插入图片描述
在中括号里的点就可以不用转义在这里插入图片描述在这里插入图片描述
但是其实cn后面应该还有.这个叫跟域名,先修改下,在这里插入图片描述
浏览器验证可以绕过,绕过之后照样给后台数据说注册邮箱,最后还是需要写python来进行验证,先用正则表达式来提交有效部分在这里插入图片描述
fullmatch,正则表达式应该对这个匹配的应该是全称匹配,如果用fullmatch就是告诉,没有一个非法字符,有一个非法字符,就跟你邮箱长度是有差异的
所以用fullmatch简单匹配一下就好
邮箱匹配出来,什么都不能说明,因为要注册,就需要发送激活的邮件,通过你自己的smtp、、服务器将邮件发出去,按照你给的链接激活,等于响应给你,你就知道确有此人

手机号,和邮箱都需要简单的提取。要在后面的服务器做一下验证,浏览器的验证都可以跳过
在这里插入图片描述
如果忘记写闭>了,浏览器有些会认为下一个<就是到封口了
a标签,链接,本身的意思是锚,anchor,href属性就用作链接的
_blank代表打开一个新页
在这里插入图片描述在这里插入图片描述
最简单就是用这种方式提取来拿到
在这里插入图片描述
如果要提取所有链接
如果是这么写的就比较麻烦了,是网页里面的换行符的意思,代表mag换行edu

在这里插入图片描述
它也可能这么写,后面的字着重用红色表示
在这里插入图片描述
首先贪婪了,singleline在这里插入图片描述
把single line去掉
在这里插入图片描述
但是遇到div也超出去了
在这里插入图片描述
遇到最好的办法还是取反
在这里插入图片描述
如果这一段也算内容
在这里插入图片描述
这个地方就锚死了是什么东西了,因为中间分组提取出来就 是空串在这里插入图片描述
没选single line只能一行行处理,多行模式,点.号不突破\n在这里插入图片描述在这里插入图片描述
前面这一部分就是选择a标签以及它的属性,绝对不会选择a标签之外的在这里插入图片描述
找一个标签,以及找一个标签内封口的东西
div内的标签分组是什么

在这里插入图片描述
div内的标签分组是什么在这里插入图片描述在这里插入图片描述
把http,https拿到了
?<>命名分组
在这里插入图片描述
这就是url的提取方式
在这里插入图片描述在这里插入图片描述
前面一定要先匹配,谁或者谁一定要考虑谁前谁后
在这里插入图片描述
一般网页怎么判断你密码输入强度,都是靠本地js脚本来判断,加入前端不判断,你就要用后端程序python来判断了在这里插入图片描述
要排个序(密码长度有限,密码是可取的),因为正则表达式这么写了就固定顺序了在这里插入图片描述
能不能不用排序靠一个表达式来实现
61 =97=a
41=4*16+1=64+1=65 A
下划线在大小写之间,所以这两个之间差了16进制二十,排完序,下划线一定在这里面

在这里插入图片描述在这里插入图片描述
能不能先判断至少里面含有一个数字,就打标记
出现\d+ 1000 1
出现A-Z 0100 1
出现a-z 0010 1
下划线_ 0001 1
没找到+1,都找到就是4,统计出来4就是强密码,要遍历4遍
但是万一有非法字符
所以还需要在这之前做
1.先判断位数 10~15
可以用断言,在数字签名或者小写字母后面一定不能怎么样,就可以判断有没有非法字符
2.判断有没有字符把这些字符取反[ ……\dA-Za-z_]+
3.往下走说明都是合法字符且长度合适
(判断数字,有没有大小写,下划线。判断出一个分值,1分就是告诉用户强度太低,2分就是中)

4表示最强,3次强,2中,1低在这里插入图片描述
出现|~}这种就不好弄了在这里插入图片描述

谁最可能用户不填就需要往前先判断,因为用户最可能落下这些
在这里插入图片描述
以前是字符一个个遍历,现在可以split断成你想要的
在这里插入图片描述在这里插入图片描述
字符串前面+r,\n这种避免歧义
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
-\w,减号和、\w取反,来切割,就是空白字符,加号代表尽量多
在这里插入图片描述
正则表达式切每一行,
如果长度是有的,等效false
就把找个单词yield出来
写成正则表达式方便,不会写makekey2

在这里插入图片描述在这里插入图片描述
空间换时间的时候就要分析,是不停的创建,还是固定的开辟空间
用来set占更大空间,需要用hash,多占空间多提高效率
在这里插入图片描述

有些不支持断言,所以还是支持分组

一般你登陆网站,推荐信息,都有两种做法,1.实时分析,2.离线分析(对日志进行分析,然后建模进行分析推荐给你)

C语言只有函数,C++有面向对象,面向对象肯定是个难点在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值