re 模块详解
1.re 模块 regex
1.查找 :findall
意思"匹配所有,每一项都是列表的组成元素" 有返回值
import re
ret=re.findall("\d+","sdadadj我5454 4445")
print(ret)#这里输出的是列表,而且使用逗号隔开
#中间调用re模块 当结果没有匹配时,会显示空列表
2.查找 search
意思:只匹配列表从左到右第一个,得到的不是直接结果,通过变量group()的方法获取结果,没有匹配会报错
import re
ret=re.search('\d+','15645646456阿杀手锏1354444jkashasjkd').group()#这里group可以放在ret后
print(ret)#如果直接输出拿出的是#如果search没有匹配的,会报错,而且只拿第一项
#
3.查找:match
意思:就是从头开始匹配,相当于search中加入一个^
import re
ret=re.match("\d*",'88dasdas小鸡小鸡洗洁精22')
print(ret.group())#这里match也需要有一个.group()来输出
match就相当于search前面匹配的加上了^ 要是没有匹配到就会报错
#
4.替换 sub
意思:找到要替换的一换掉
5.import re
ret=re.sub("\d+","Q","assd54544jsdas22",1)#前面的是一个正则表达式
谁 新的 替换 次数
print(ret) 5.1import re
ret=re.subn("\d+","Q","assd54544jsdas22",1)#前面的是一个正则表达式
谁 新的 替换 次数
print(ret)#这里的subn是返回一个元祖,不添加n返回字符串
5.切割 split
意思:这里的切割是将元素切掉,形成一个新的列表
import re
ret=re.split("a",'acbcd')#这里的切割是将匹配的元素切割掉,形成一个列表
print(ret)#
import re
ret=re.split("(a)",'acbcd')#在匹配的部分上加上()之后所得出的结果是不同的
没有()的没有保留用来切割的元素,但是有()可以保留切割下的元素
这在某些需要保留匹配的十分重要
print(ret)#
6re模块进阶
compile :声明
意思:这里会提前声明好正则,节省后面时间
6.import re
ret=re.compile("\d+")#compile这里进阶的是可以节省时间,提前声明
匹配的元素后面的都可以调用,省去写"\d+"的时间
res=ret.search("1拒绝23456")
ress=ret.search("硕大的5大声道55")
print(res.group())
print(ress.group())
7.re模块进阶
finditer:
意思:返回一个迭代器,所有的结果放到迭代器中,要循环+group的形式取值,节省时间
7.import re
ret=re.finditer("\d+","alex80taibai40")#优点可以节省内存
print(ret)#这里返回的是地址,可以把他当成调用迭代器
print(ret.__next__().group())#输出第一项,注意需要在后面加group
print(ret.__next__().group())#输出第二项
for i in ret:#全部输出
print(i.group())
8.()分组技巧
import re
s = '<a>wahaha</a>' # 标签语言 html 网页
ret = re.search('<(\w+)>(\w+)</(\w+)>',s)
print(ret.group()) # 所有的结果
print(ret.group(1)) # 数字参数代表的是取对应分组中的内容
print(ret.group(2))
print(ret.group(3))
ret=re.findall("(\w+)",s) print(ret)
ret = re.findall('>\w+<',s)
print(ret)#['>wahaha<']
ret = re.findall('>(\w+)<',s)#当在用findall来获取内容时,有的时候你想要获取的并不
是他所展现出的,这个时候可以用()分组来显示优先级但这个只是显示在模块中,在正则表达式
在线测试并不适用
print(ret)#['wahaha']
取消优先级 ?:
10. import re
ret=re.findall("\d+(?:\.\d+)?",'1.222*4')#在取消优先级的时候要在你优先级()里面
的最前方添加?:可以取消优先级
print(ret)
取名 ?p
使用这样的必须前后一致
s = '<a>wahaha</a>'
pattern = '<(\w+)>(\w+)</(\w+)>'
ret = re.search(pattern,s)
print(ret.group(1) == ret.group(3))
s="sadsadaa"
print(s.count("a"))
12.import re
s="<a>wahaha</a>"
ret=re.search(">(?P<zq>\w+)<",s)#分组命名是将(?:<这个组的名字>正则表达式), 而且这个名字代表这个group的位置
print(ret.group(1))
print(ret.group('zq'))
re 模块详解的更多相关文章
- Python中操作mysql的pymysql模块详解
Python中操作mysql的pymysql模块详解 前言 pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同.但目前pymysql支持python3.x而后者不支持 ...
- python之OS模块详解
python之OS模块详解 ^_^,步入第二个模块世界----->OS 常见函数列表 os.sep:取代操作系统特定的路径分隔符 os.name:指示你正在使用的工作平台.比如对于Windows ...
- python之sys模块详解
python之sys模块详解 sys模块功能多,我们这里介绍一些比较实用的功能,相信你会喜欢的,和我一起走进python的模块吧! sys模块的常见函数列表 sys.argv: 实现从程序外部向程序传 ...
- python中threading模块详解(一)
python中threading模块详解(一) 来源 http://blog.chinaunix.net/uid-27571599-id-3484048.html threading提供了一个比thr ...
- python time 模块详解
Python中time模块详解 发表于2011年5月5日 12:58 a.m. 位于分类我爱Python 在平常的代码中,我们常常需要与时间打交道.在Python中,与时间处理有关的模块就包括: ...
- python time模块详解
python time模块详解 转自:http://blog.csdn.net/kiki113/article/details/4033017 python 的内嵌time模板翻译及说明 一.简介 ...
- 小白的Python之路 day5 time,datatime模块详解
一.模块的分类 可以分成三大类: 1.标准库 2.开源模块 3.自定义模块 二.标准库模块详解 1.time与datetime 在Python中,通常有这几种方式来表示时间:1)时间戳 2)格式化的时 ...
- 小白的Python之路 day5 random模块和string模块详解
random模块详解 一.概述 首先我们看到这个单词是随机的意思,他在python中的主要用于一些随机数,或者需要写一些随机数的代码,下面我们就来整理他的一些用法 二.常用方法 1. random.r ...
- Python中time模块详解
Python中time模块详解 在平常的代码中,我们常常需要与时间打交道.在Python中,与时间处理有关的模块就包括:time,datetime以及calendar.这篇文章,主要讲解time模块. ...
- Ansible安装部署及常用模块详解
Ansible命令使用 Ansible语法使用ansible <pattern_goes_here> -m <module_name> -a <arguments> ...
随机推荐
- UML图示样例
- Python IO 模式
IO 模式 对于 Linux 的 network IO: 一次 IO 访问(以read举例),数据会先被拷贝到操作系统内核的缓冲区中,然后才会从操作系统内核的缓冲区 copy 到应用程序的地址空间.所 ...
- NOIP模拟赛 最佳组合
题目描述 Description \(Bzeroth\) 大陆最终还是覆灭了,所以你需要为地灾军团服务了. 地灾军团军师黑袍不擅长写题面,所以你只需要看简化版的题意即可. 给定 \(3\) 个长度均为 ...
- MySQL实战45讲学习笔记:第二十五讲
一.引子 在上一篇文章中,我和你介绍了 binlog 的基本内容,在一个主备关系中,每个备库接收主库的 binlog 并执行. 正常情况下,只要主库执行更新生成的所有 binlog,都可以传到备库并被 ...
- Linux高性能服务器编程,书中的 shell 命令
记录<Linux高性能服务器编程>书里面讲解到的若干 shell 命令 arp 命令查看ARP高速缓存: [root@VM_0_10_centos heliang]# arp -a ? ( ...
- sierpinski地毯(II)
今天又是因为可以用py而高兴的一天. 继续咱的sierpinski地毯计划. 二,随机算法 在二十年前,磁盘容量以MB还是KB计的时候,分形解决计图的问题确实有很大的优势.存至多十来个数就好了.我要在 ...
- vue中toggle切换的3种写法
前言:查看下面代码,在任意编辑器中直接复制粘贴运行即可 1:非动态组件(全局注册2个组件,借用v-if指令和三元表达式) <!DOCTYPE html> <html> < ...
- C#中的一些对话框问题处理
1. 对于打开文件对话框处理 #region 打开文件对话框 string StrPath; OpenFileDialog Flag = new OpenFileDialog(); Flag.Mult ...
- 重温CLR(十七)程序集加载和反射
本章主要讨论在编译时对一个类型一无所知的情况下,如何在运行时发现类型的信息.创建类型的实例以及访问类型的成员.可利用本章讲述的内容创建动态可扩展应用程序. 反射使用的典型场景一般是由一家公司创建宿主应 ...
- 安装Yapi时,出现json-schema-faker模块找不到问题
今天换了一台机器按以前的方式安装Yapi工具时,竟然出现了错误. 一 安装yapi时,出现了下面的报错,一开始以为没安装json-schema-faker模块.后面通过找资料,发现是权限问题, 使用c ...