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 模块详解的更多相关文章

  1. Python中操作mysql的pymysql模块详解

    Python中操作mysql的pymysql模块详解 前言 pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同.但目前pymysql支持python3.x而后者不支持 ...

  2. python之OS模块详解

    python之OS模块详解 ^_^,步入第二个模块世界----->OS 常见函数列表 os.sep:取代操作系统特定的路径分隔符 os.name:指示你正在使用的工作平台.比如对于Windows ...

  3. python之sys模块详解

    python之sys模块详解 sys模块功能多,我们这里介绍一些比较实用的功能,相信你会喜欢的,和我一起走进python的模块吧! sys模块的常见函数列表 sys.argv: 实现从程序外部向程序传 ...

  4. python中threading模块详解(一)

    python中threading模块详解(一) 来源 http://blog.chinaunix.net/uid-27571599-id-3484048.html threading提供了一个比thr ...

  5. python time 模块详解

    Python中time模块详解 发表于2011年5月5日 12:58 a.m.    位于分类我爱Python 在平常的代码中,我们常常需要与时间打交道.在Python中,与时间处理有关的模块就包括: ...

  6. python time模块详解

    python time模块详解 转自:http://blog.csdn.net/kiki113/article/details/4033017 python 的内嵌time模板翻译及说明  一.简介 ...

  7. 小白的Python之路 day5 time,datatime模块详解

    一.模块的分类 可以分成三大类: 1.标准库 2.开源模块 3.自定义模块 二.标准库模块详解 1.time与datetime 在Python中,通常有这几种方式来表示时间:1)时间戳 2)格式化的时 ...

  8. 小白的Python之路 day5 random模块和string模块详解

    random模块详解 一.概述 首先我们看到这个单词是随机的意思,他在python中的主要用于一些随机数,或者需要写一些随机数的代码,下面我们就来整理他的一些用法 二.常用方法 1. random.r ...

  9. Python中time模块详解

    Python中time模块详解 在平常的代码中,我们常常需要与时间打交道.在Python中,与时间处理有关的模块就包括:time,datetime以及calendar.这篇文章,主要讲解time模块. ...

  10. Ansible安装部署及常用模块详解

    Ansible命令使用 Ansible语法使用ansible <pattern_goes_here> -m <module_name> -a <arguments> ...

随机推荐

  1. Tensorflow之MNIST手写数字识别:分类问题(1)

    一.MNIST数据集读取 one hot 独热编码独热编码是一种稀疏向量,其中:一个向量设为1,其他元素均设为0.独热编码常用于表示拥有有限个可能值的字符串或标识符优点:   1.将离散特征的取值扩展 ...

  2. 题解:swj社会摇进阶第二课

    题目链接 思路:按题目推一点点可以得出答案为 sigma (i-k)*n/i+d(n%i>=k) #include<bits/stdc++.h> using namespace st ...

  3. CF1278C-Berry Jam-(前缀和)

    https://vjudge.net/problem/CodeForces-1278C 题意:有2n瓶果酱,中间有一个楼梯隔开,从中间往左或右两边清空果酱,使得两种果酱的数量相等,最少要清空多少瓶 思 ...

  4. yii2-CaptchaAction macos500 不显示

    把公司一个项目pull到本地 发现验证码不输出了 怀疑是gd库没装  php -m看了下 gd库是装了的 有搜索到可能是因为自带的php拓展生成不了png(觉得不太可能) 试了下自己写一个图片生成pn ...

  5. 用scratch写了一个win98 界面模拟

    scratch模拟win98 玩耍,放在网上了https://kada.163.com/project/4216461-3515165.htm

  6. OpenCV Error: Unknown error code -10 (Raw image encoder error: Empty JPEG image (DNL not supported)) in throwOnEror 错误

    出现上面这样的错误可以肯定是传了空指针导致的, 刚开始出现这样的问题, 并且是概率性的, 网上找了一遍都没找到解决方案, 然后自己一行一行代码注释, 发现还是会出现这样的问题, 当时就懵逼了, 我从打 ...

  7. JAVA基础系列:Arrays.sort()

    JDK 1.8  java.util.Arrays.class(rt.jar) 1. Collections.sort方法底层就是调用的Arrays.sort方法. 2. Java Arrays中提供 ...

  8. ubuntu18.04下安装无线网卡驱动心得

    联想Lenovo的笔记本,装完系统wifi显示找不到适配器. lspci | grep Wireless 显示无线网卡类型为博通的BCM43162. 网上一查,果然有问题. apt install f ...

  9. [MFC]_在vs2019中使用MFC快速构建简单windows窗口程序

    微软基础类库(英语: Classes,简称MFC)是微软公司提供的一个类库(class libraries),以C++类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发 ...

  10. 【Python】运算符

    python是强类型语言,某些场合下需要进行类型转换.关系运算符的结果是true或false.这里介绍一下基本的运算符,和几个使用实例,了解并掌握python中range()函数和math类库的引入和 ...