分组在re模块中的使用以及使用正则表达式的技巧
1.split:切割
使用split不会返回被切割的字符
import re
ret = re.split("\d+","5as46asf46asf46a")
print(ret)
结果为:['', 'as', 'asf', 'asf', 'a']
要想返回被切割的数字,需要在正则表达式前后加( )
import re
ret1 = re.split("(\d+)","5as46asf46asf46a")
print(ret1)
结果为:['', '5', 'as', '46', 'asf', '46', 'asf', '46', 'a']
2.分组命名:(?P<这个组的名字>正则表达式)
import re
s = "<a>wahaha</a>"
ret = re.search("<\w+>(?P<abc>\w+)</\w+>",s)
print(ret.group())#结果为<a>wahaha</a>
print(ret.group("abc"))#结果为wahaha
3.使用findall可以取到分组中的内容,在表达式中加( )可以优先显示分组中的内容
import re
s = "<a>wahaha</a>"
ret = re.findall("<\w+>(\w+)</\w+>",s)
print(ret)#结果为["wahaha"]
如果要取消分组优先,使用(?:正则表达式)
import re
s = "<a>wahaha</a>"
ret = re.findall("<\w+>(\w+)</\w+>",s)
ret1 = re.findall("<\w+>(?:\w+)</\w+>",s)
print(ret)#结果为["wahaha"]
print(ret1)#结果为["<a>wahaha</a>"]
在网页html中,如果使用分组,要求使用这个名字的分组和前面的同名分组中的内容匹配的必须一致
前一个标签可以用?P<tab>,后一个标签可以用?P=tab
import re
1 pattern = "<(?P<tab>\w+)>(\w+)</(?P=tab)>"
ret = re.search(pattern,s)
print(ret.group())#结果为:<a>wahaha</a>
4.
import re
ret1 = re.findall(r"\d+\.\d+|\d+","1-2*(60+(-40.35/5)-(-4*3))")
print(ret1)结果为:['1', '2', '60', '40.35', '5', '4', '3']
如果要过滤掉小数:
import re
ret2 = re.findall(r"\d+\.\d+|(\d+)","1-2*(60+(-40.35/5)-(-4*3))")
print(ret2)结果为:['1', '2', '60', '', '5', '4', '3']
分组在re模块中的使用以及使用正则表达式的技巧的更多相关文章
- 分组在re模块中的使用
import re #search s = "<a>wahaha</a>" #标签语言 html 和 web相关 ret= re.search(" ...
- python基础:os模块中关于文件/目录常用的函数使用方法
Python是跨平台的语言,也即是说同样的源代码在不同的操作系统不需要修改就可以同样实现 因此Python的作者就倒腾了OS模块这么一个玩意儿出来,有了OS模块,我们不需要关心什么操作系统下使用什么模 ...
- os模块中关于文件/目录常用的函数使用方法
os模块中关于文件/目录常用的函数使用方法 函数名 使用方法 getcwd() 返回当前工作目录 chdir(path) 改变工作目录 listdir(path='.') 列举指定目录中的文件名('. ...
- 18 os/os.path模块中关于文件/目录常用的函数使用方法 (转)
os模块中关于文件/目录常用的函数使用方法 函数名 使用方法 getcwd() 返回当前工作目录 chdir(path) 改变工作目录 listdir(path='.') 列举指定目录中的文件名('. ...
- os、os.path模块中关于文件、目录常用的函数使用方法
os模块中关于文件/目录常用的函数使用方法 函数名 使用方法 getcwd() 返回当前工作目录 chdir(path) 改变工作目录 listdir(path='.') 列举 ...
- python编程os、os.path 模块中关于文件、目录常用的函数使用方法
os模块中关于文件/目录常用的函数使用方法 函数名 使用方法 getcwd() 返回当前工作目录 chdir(path) 改变工作目录 listdir(path='.') 列举指定目录中的文件名( ...
- re模块中的非贪婪匹配
python的re模块中有贪婪匹配和非贪婪匹配之分,当使用*时会匹配零个或多个,使用+时会匹配一个或多个.当使用?在前边特殊符号前时会进行非贪婪匹配,匹配零个或者一个,今天主要讨论非贪婪匹配中存在的坑 ...
- 0802_转载-nn模块中的网络层介绍
0802_转载-nn 模块中的网络层介绍 目录 一.写在前面 二.卷积运算与卷积层 2.1 1d 2d 3d 卷积示意 2.2 nn.Conv2d 2.3 转置卷积 三.池化层 四.线性层 五.激活函 ...
- Nginx基础知识之————RTMP模块中的中HLS专题(翻译文档)
一.在Nginx配置文件的RTMP模块中配置hls hls_key_path /tmp/hlskeys; 提示错误信息: nginx: [emerg] the same path name " ...
随机推荐
- vista下开机启动 简单绕过UAC的方法(自己使用runas参数重新启动自己,有点意思)
背景 vista下,如果不开启UAC,那就没有我下面要说的问题了,呵呵.下面说的都是在vista开启UAC的前提下说的,win7也适用. 在vista下,系统开启了UAC,如果你的 ...
- php PAC 安装
LIUNX wget http://pecl.php.net/get/APC-3.1.8.tgz tar -zxvf APC-3.1.8.tgz cd APC-3.1.8 /usr/local/php ...
- java关键字-final
final特点: 1:这个关键字是一个修饰符,可以修饰类,方法,变量. 2:被final修饰的类是一个最终类,不可以被继承. 3:被final修饰的方法是一个最终方法,不可以被覆盖. 4:被final ...
- Python 爬虫从入门到进阶之路(六)
在之前的文章中我们介绍了一下 opener 应用中的 ProxyHandler 处理器(代理设置),本篇文章我们再来看一下 opener 中的 Cookie 的使用. Cookie 是指某些网站服务器 ...
- 浅谈我在.net core一年里的收获
前言:以前一直在winserver的环境里从事web工作,安装一个sqlserver,iis,把项目部署上面就OK了,简单轻松一.结缘nginx以前一直听说nginx这个反向代理的web服务器,当玩n ...
- 再说Java集合,subList之于ArrayList
上一章说了很多ArrayList相关的内容,但还有一块儿内容没说到,那就是subList方法.先看一段代码 public static void testSubList() { List<Str ...
- F#周报2019年第26期
新闻 逐渐演化的.NET Core框架 Visual Studio提示与技巧 Windows Termina(预览) Microsoft在GitHub上的工程师从2000名增加至25000名 视频及幻 ...
- http-post调用接口简单代码
一.简单便捷的httpget调用接口,并且返回接口数据1.导入相应的jar包: 2.代码如下: HttpPost post = null; try { HttpClient httpClient = ...
- spring boot 2.x 系列 —— spring boot 整合 servlet 3.0
文章目录 一.说明 1.1 项目结构说明 1.2 项目依赖 二.采用spring 注册方式整合 servlet 2.1 新建过滤器.监听器和servlet 2.2 注册过滤器.监听器和servlet ...
- js避坑历险记
代码改变世界,世界改变码农,码农改变代码! 我就是我,我就是一个码农的武林. 前方JS巨坑出没,请注意集中力! 巨坑1:js精度问题 前段时间去一家物流公司面试,做了一个js题,印象尤为深刻: var ...