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. 鲜贝7.3--python安装

    方法一:google 搜索 anaconda 进入官网下载64位最新版本 勾选加入环境变量 +默认3.7 打开cmd pip 发现已经完成安装 右键此电脑 属性 高级属性 环境变量 ’ 已经被加入 方 ...

  2. 零基础入门 实战mpvue2.0多端小程序框架

    第1章 课程快速预览(必看!!!)在这一章节中,老师讲带领你快速预览课程整体.其中,涉及到为什么要做这么一门实战课程.制作一个小程序的完整流程是怎么样的,以及如何做项目的技术选型. 第2章 30 分钟 ...

  3. 【BZOJ5457】城市(线段树合并)

    点此看题面 大致题意: 一棵树上每个点有颜色\(a_i\)和权值\(b_i\),求以每个点为根的子树内权值和最大的颜色及其权值和. 线段树合并 这是一道线段树合并板子题. (关于线段树合并,可参考我的 ...

  4. Paper | Making a "Completely Blind" Image Quality Analyzer

    目录 1. 技术细节 1.1 NSS特征 1.2 选择锐利块来计算NSS 1.3 一张图像得到36个特征 1.4 用MVG建模这36个特征 1.5 NIQE指标 2. 实验 质量评估大佬AC Bovi ...

  5. Navicat Premium Mac 12 破解(亲测可用!!!)

    今天不知怎的,出于强迫症的我就是要强行搞个Navicat Premium Mac 12 破解版本. 历经了种种种种种种磨难与艰辛与火海,终于破解成功了. 因为要经常使用MySQL,使用命令行那是相当的 ...

  6. uni-app 环境配置,uni.request封装,接口配置,全局配置,接口调用的封装

    1.环境配置 (可参考uni-官网的环境配置) common文件夹下新建config.js let url_config = "" if(process.env.NODE_ENV ...

  7. ES6中有关数组的一些新操作

    1.Array.isArray() 用于确定传递的值是否是一个 Array. Array.isArray([1, 2, 3]); // true Array.isArray({foo: 123}); ...

  8. pixijs shader 扫光加强版

    pixijs shader 扫光加强版 const app = new PIXI.Application({ transparent: true }); document.body.appendChi ...

  9. Appium 环境配置

    前言 Appium 作为移动端自动化测试工具在业界非常流行,特别是在当前移动互联网背景下,很多公司基于此框架来开展自动化测试.但 appium 的环境配置相对 selenium 来说复杂的多,让很多同 ...

  10. Kubernetes service 使用定义

    Kubernetes service 使用定义 介绍说明 • 防止Pod失联• 定义一组Pod的访问策略• 支持ClusterIP,NodePort以及LoadBalancer三种类型• Servic ...