0428 正则表达式 re模块
复习
异常处理
try except 一定要在except之后写一些提示或者处理的内容 try:
'''可能会出现异常的代码'''
except ValueError:
'''打印一些提示或者处理的内容'''
except NameError:
'''...'''
# except Exception as e:
# '''打印e'''
else:
'''try中的代码正常执行了'''
finally:
'''无论错误是否发生,都会执行这段代码,用来做一些收尾工作'''
二、正则表达式
1,正则表达式用来对字符串进行操作
2,使用一些规则来检测来检测字符串是否符合我的要求————表单验证
3,从一段字符串中找出符合我要求分内容————爬虫 完全相等的字符串都可以匹配上 字符组:字符组代表一个字符位置上可以出现的所有内容
范围:
根据asc码来的,范围必须是从大到小的指向
一个字符组中可以有多个范围





转义符



身份证号码第一个长度为15或18个字符的字符串,首位不能为0
如果是15位则全部为数字组成
如果是18位则前十七位全部是数字,末位可能是数字或X
[1-9]\d{16}[\dx]|[1-9]\d{14} 或
如果两个正则表达式之间用‘或’连接,且有一部分正则规则相同,那么一定把规则长的放在前面
[1-9]\d{14}(\d{2}[\dx])?
如果对一组正则表达式整体有一个量词约束,就将这组表达式分成一个组在组外进行量词约束
三、re模块
import re
ret = re.findall('a','eav,and,apple')
print(ret) #['a', 'a', 'a']
findall接收两个参数 : 正则表达式 要匹配的字符串
一个列表数据类型的返回值:所有和这条正则匹配的结果
如果没有,返回[]
import re
ret = re.search('a', 'eva egon yuan')
print(ret.group()) #a
search和findall的区别:
1.search找到一个就返回,findall是找所有
2.findall是直接返回一个结果的列表,search返回一个对象
import re
ret = re.match('a', 'eva egon yuan')
if ret:
print(ret.group()) #None
match
·1 意味着在正则表达式中添加了一个^
·2 和search一样 匹配返回结果对象 没匹配到返回None
·3 和search一样 从结果中获取值 仍然用group
import re
ret = re.sub('\d', 'H', 'eva3egon4yuan4',2)
print(ret) #evaHegonHyuan4 将数字替换成'H',参数2表示只替换2个
import re
ret = re.subn('\d', 'H', 'eva3egon4yuan4')
print(ret) #('evaHegonHyuanH',3)#将数字替换成'H',返回元组(替换的结果,替换了多少次)
import re
obj = re.compile('\d{3}') # 编译 在多次执行同一条正则规则的时候才适用
ret1 = obj.search('abc123eeee')
ret2 = obj.findall('abc123eeee')
print(ret1.group())
print(ret2) 正则表达式 -->根据规则匹配字符串
从一个字符串中找到符合规则的字符串 --> python
正则规则 -编译-> python能理解的语言
多次执行,就需要多次编译 浪费时间 re.findall('1[3-9]\d{9}',line)
编译 re.compile('\d{3}') import re
ret = re.finditer('\d', 'ds3sy4784a') #finditer适用于结果比较多的情况下,能够有效的节省内存
print(ret) # <callable_iterator object at 0x10195f940> finditer返回一个存放匹配结果的迭代器
print(ret.__next__().group()) 查看第一个结果
print(next(ret).group()) 查看第二个结果
for i in ret:
print(i.group())
当分组遇到re模块
import re
ret1 = re.findall('www.(baidu|oldboy).com', 'www.oldboy.com')
ret2 = re.findall('www.(?:baidu|oldboy).com', 'www.baidu.com')
print(ret1) ['oldboy']
print(ret2) ['www.baidu.com']
findall会优先显示组内匹配到的内容,如果想取消分组优先效果,在组内开始的时候加上?:
ret=re.split("\d+","eva3egon4yuan")
print(ret) #结果 : ['eva', 'egon', 'yuan']
ret=re.split("(\d+)","eva3egon4yuan")
print(ret) #结果 : ['eva', '3', 'egon', '4', 'yuan']
split分割一个字符串,默认被匹配到的分隔符不会出现在结果列表中,
如果将匹配的正则放到组内,就会将分隔符放到结果列表里
#在匹配部分加上()之后所切出的结果是不同的,
#没有()的没有保留所匹配的项,但是有()的却能够保留了匹配的项,
#这个在某些需要保留匹配部分的使用过程是非常重要的。
分组命名 和 search遇到分组
标签 .html 网页文件 标签文件
import re
分组的意义
1.对一组正则规则进行量词约束
2.从一整条正则规则匹配的结果中优先显示组内的内容
"<h1>hello</h1>"
ret = re.findall('<\w+>(\w+)</\w+>',"<h1>hello</h1>")
print(ret) 分组命名
ret = re.search("<(?P<tag>\w+)>(?P<content>\w+)</(?P=tag)>","<h1>hello</h1>")
print(ret)
print(ret.group()) # search中没有分组优先的概念
print(ret.group('tag'))
print(ret.group('content')) ret = re.search(r"<(\w+)>(\w+)</\1>","<h1>hello</h1>")
#如果不给组起名字,也可以用\序号来找到对应的组,表示要找的内容和前面的组内容一致
#获取的匹配结果可以直接用group(序号)拿到对应的值
print(ret.group())
print(ret.group(0)) #结果 :<h1>hello</h1>
print(ret.group(1)) #结果 :h1
print(ret.group(2)) #结果 :hello
0428 正则表达式 re模块的更多相关文章
- python正则表达式Re模块备忘录
title: python正则表达式Re模块备忘录 date: 2019/1/31 18:17:08 toc: true --- python正则表达式Re模块备忘录 备忘录 python中的数量词为 ...
- python 正则表达式re模块
#####################总结############## 优点: 灵活, 功能性强, 逻辑性强. 缺点: 上手难,旦上手, 会爱上这个东西 ...
- python基础之正则表达式 re模块
内容梗概: 1. 正则表达式 2. re模块的使⽤ 3. 一堆练习正则表达式是对字符串串操作的一种逻辑公式. 我们一般使用正则表达式对字符串进行匹配和过滤.使用正则的优缺点: 优点: 灵活,功能性强, ...
- python记录_day23 正则表达式 re模块
一. 正则表达式 使用python的re模块之前应该对正则表达式有一定的了解 正则表达式是对字符串操作的一种逻辑公式.我们一般使用正则表达式对字符串进行匹配和过滤. 正则的优缺点: 优点:灵活, 功能 ...
- Python面试题之Python正则表达式re模块
一.Python正则表达式re模块简介 正则表达式,是一门相对通用的语言.简单说就是:用一系列的规则语法,去匹配,查找,替换等操作字符串,以达到对应的目的:此套规则,就是所谓的正则表达式.各个语言都有 ...
- Python 正则表达式——re模块介绍
Python 正则表达式 re 模块使 Python 语言拥有全部的正则表达式功能,re模块常用方法: re.match函数 re.match从字符串的起始位置匹配,如果起始位置匹配不成功,则matc ...
- 学习django之正则表达式re模块
re(regular expression)模块 正则表达式(regular expression)主要功能是从字符串(string)中通过特定的模式(pattern),搜索想要找到的内容. 一.re ...
- 正则表达式re模块
正则表达式模块re 1. 正则简介 就其本质而言,正则表达式(或 RE)是一种小型的.高度专业化的编程语言, (在Python中)它内嵌在Python中,并通过 re 模块实现.正则表达式模式被 编译 ...
- python正则表达式——re模块
http://blog.csdn.net/zm2714/article/details/8016323 re模块 开始使用re Python通过re模块提供对正则表达式的支持.使用re的一般步骤是先将 ...
随机推荐
- c#利用委托传递函数参数(1)
本次旨在解决 同参不同名 的函数作为参数传递的情况 情景: 一下两个函数分别多次重复调用了两个同参不同名的函数(实际上总共有3个这样的函数),函数结构基本相同,只有调用的函数名不一样,显然可以整合在一 ...
- jQuery的$.fn使用
jquery中文网为您提供jQuery的$.fn使用等资源,欢迎您收藏本站,我们将为您提供最新的jQuery的$.fn使用资源 $.fn是指jquery的命名空间,加上fn上的方法及属性,会对jque ...
- php SSL certificate problem: unable to get local issuer certificate
加上 curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE); 就可以了 百度语音的demo: <?php header("Content-type ...
- maven 工程聚合插件
<!-- war包生成插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <a ...
- eclipse 连接 hadoop集群
1 网上找插件 或者 自己编译 放到eclipse plugin里面 2 重启eclipse 配置MapReduceLocation 通吃端口为9001 9000 看你自己的配置 3 新建mapRed ...
- 信号量semaphore解析
1 基础概念 信号量在创建时须要设置一个初始值,表示同一时候能够有几个任务能够訪问该信号量保护的共享资源.初始值为1就变成相互排斥锁(Mutex),即同一时候仅仅能有一个任务能够訪问信号量保护的共享资 ...
- IOS下移除按钮默认美化样式
今天在做项目中发现 ios会自己美化按钮的样式 美化的一般都是加一个圆角 也就是常说的border-radius 属性 今天在弄一个input标签的时候加了一个border-bottom属性 ...
- kubernetes高级之集群中使用sysctls
系列目录 在linux系统里,sysctls 接口允许管理员在运行时修改内核参数.参数存在于/proc/sys/虚拟进程文件系统里.参数涉及到很多子模块,例如: 内核(kernel)(常见前缀kern ...
- 【BZOJ1061/3265】[Noi2008]志愿者招募/志愿者招募加强版 单纯形法
[BZOJ1061][Noi2008]志愿者招募 Description 申奥成功后,布布经过不懈努力,终于成为奥组委下属公司人力资源部门的主管.布布刚上任就遇到了一个难题:为即将启动的奥运新项目招募 ...
- 4 Values whose Sum is 0(二分)
4 Values whose Sum is 0 Time Limit: 15000MS Memory Limit: 228000K Total Submissions: 21370 Accep ...

