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> ...
随机推荐
- Pwn-level2
题目地址 https://dn.jarvisoj.com/challengefiles/level2.54931449c557d0551c4fc2a10f4778a1 先看一下文件的属性 32位 ...
- 剑指Offer-7.斐波那契数列(C++/Java)
题目: 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0). n<=39 分析: 斐波那契数列是0,1,1,2,3,5,8,13...也就是当前 ...
- Linux学习笔记-第17天 有点赶
第十章开始进度感觉有些快,该加把劲儿了
- Win10中SVN图标不显示的解决
团队协作开发,SVN是离不开的.在Win10安装的版本是TortoiseSVN-1.9.5.27581,可检出后图标未显示出来.解决方法是修改注册表: 第一步,打开注册表编辑器位置:HKEY_LOCA ...
- Asp.Net Core AsyncLocal 异步上下文
引子 阅读以下代码,并尝试分析 代码解析 在主线程中,线程Id为1,为线程变量赋值 变量==d6ff 开启一个新的task,此时线程Id为4,变量==d6ff,并调用Task1 开启一个同步Task3 ...
- [开源]OSharpNS 步步为营系列 - 4. 添加业务对外API
什么是OSharp OSharpNS全称OSharp Framework with .NetStandard2.0,是一个基于.NetStandard2.0开发的一个.NetCore快速开发框架.这个 ...
- windows xp 安装后不能能ping,浏览器不能上网
windows xp MSDN版本 下载地址: ed2k://|file|zh-hans_windows_xp_home_with_service_pack_3_x86_cd_x14-92408.is ...
- LeetCode 841:钥匙和房间 Keys and Rooms
题目: 有 N 个房间,开始时你位于 0 号房间.每个房间有不同的号码:0,1,2,...,N-1,并且房间里可能有一些钥匙能使你进入下一个房间. 在形式上,对于每个房间 i 都有一个钥匙列表 ...
- spring context:component-scan
<context:component-scan base-package="com.zhuguang.jack" <!-- 扫描的基本包路径 --> annota ...
- python asyncio as_completed
#asyncio 没有提供http协议的接口 aiohttp import asyncio import socket from urllib.parse import urlparse async ...