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> ...
随机推荐
- node exporter
在prometheus中负责数据汇报的程序统一叫做exporter; 负责主机信息收集的node_exporter 可以利用prometheus的static_configs来拉取node_expor ...
- oracle 定时运行存储过程的实现
是基于PL/SQL 可视化工具的实现: 首先,先编写一个存储过程 点击procedure,右键新建,填写一个你编写的存储过程的名字: 如果是对正常的表进行操作,那么直接在begin和end ...
- jQuery中的事件对象(八)
Event 对象代表事件的状态,比如事件在其中发生的元素.键盘按键的状态.鼠标的位置.鼠标按钮的状态. 一.事件对象基本认识 1. 什么时候会产生Event 对象呢? 例如: 当用户单击某个元素的时 ...
- Python爬虫:
python中selenium操作下拉滚动条方法汇总 UI自动化中经常会遇到元素识别不到,找不到的问题,原因有很多,比如不在iframe里,xpath或id写错了等等:但有一种是在当前显示的页面元 ...
- LeetCode 739 每日温度
1.直接遍历 暴力求解 class Solution { public: vector<int>dailyTemperatures(vector<int>& T) { ...
- CF1278C-Berry Jam-(前缀和)
https://vjudge.net/problem/CodeForces-1278C 题意:有2n瓶果酱,中间有一个楼梯隔开,从中间往左或右两边清空果酱,使得两种果酱的数量相等,最少要清空多少瓶 思 ...
- Codeforces Round #596 (Div. 2, based on Technocup 2020 Elimination Round 2) D. Power Products 数学 暴力
D. Power Products You are given n positive integers a1,-,an, and an integer k≥2. Count the number of ...
- [LeetCode] 11. Container With Most Water 装最多水的容器
Given n non-negative integers a1, a2, ..., an , where each represents a point at coordinate (i, ai). ...
- CSP-S 2019 AFO记
DAY -1 上午并没有改出题,然而调出了动态$dp$,于是顺便$AC$了保卫王国,于是就很愉悦. 下午考前自闭赛,把会的题和原题写了出来,然后就$rank1$了,感觉自己$rp--$. 晚上发现$T ...
- 如何编写一个 SendFile 服务器
如何编写一个 SendFile 服务器 前言 之前讨论零拷贝的时候,我们知道,两台机器之间传输文件,最快的方式就是 send file,众所周知,在 Java 中,该技术对应的则是 FileChann ...