分组在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 " ...
随机推荐
- Excel求值表达式——太好用了
这个需要通过宏表函数EVALUATE来实现,首先需要自定义名称.如果数据在A列,那么在B列自定义名称,按Ctrl+F3键,在“定义名称框”中选择“新建”,然后输入名称为“结果”,数据来源输入=EVAL ...
- 界面美化.CStatic控件的美化(好多系列文章)
http://www.cnblogs.com/20090802/archive/2010/09/17/1829283.html 静态控件也是比较常用的控件,在VS开发环境中用的应该挺频繁的吧. 其实m ...
- javaweb各种框架组合案例(三):maven+spring+springMVC+hibernate
1.hibernate译为"越冬",指的是给java程序员带来春天,因为java程序员无需再关心各种sql了: 2.hibernate通过java类生成数据库表,通过操作对象来映射 ...
- Storm 学习之路(九)—— Storm集成Kafka
一.整合说明 Storm官方对Kafka的整合分为两个版本,官方说明文档分别如下: Storm Kafka Integration : 主要是针对0.8.x版本的Kafka提供整合支持: Storm ...
- Hive 学习之路(六)—— Hive 视图和索引
一.视图 1.1 简介 Hive 中的视图和RDBMS中视图的概念一致,都是一组数据的逻辑表示,本质上就是一条SELECT语句的结果集.视图是纯粹的逻辑对象,没有关联的存储(Hive 3.0.0引入的 ...
- spring 5.x 系列第8篇 —— 整合Redis客户端 Jedis和Redisson (代码配置方式)
文章目录 一.说明 1.1 Redis 客户端说明 1.2 Redis可视化软件 1.3 项目结构说明 1.3 依赖说明 二.spring 整合 jedis 2.1 新建基本配置文件和其映射类 2.2 ...
- Knative 初体验:Build Hello World
作者 | 阿里云智能事业群技术专家 冬岛 Build 模块提供了一套 Pipeline 机制.Pipeline 的每一个步骤都可以执行一个动作,这个动作可以是把源码编译成二进制.可以是编译镜像也可以是 ...
- 安装Ruby、多版本Ruby共存、Ruby安装慢问题
rbenv rbenv可以管理多个版本的ruby.可以分为3种范围(或者说不同生效作用域)的版本: local版:本地,针对各项目范围 global版:全局,没有shell和local版时使用glob ...
- python的输入和输出
基本输出 python中的输出使用关键字--print,与python2不同的是,python3的输出后面必须要加括号,示例如下: python3.0以上输出: python2.0以上的输出: 格式化 ...
- 使用SpringSecurity搭建授权认证服务(1) -- 基本demo认证原理
使用SpringSecurity搭建授权认证服务(1) -- 基本demo 登录认证是做后台开发的最基本的能力,初学就知道一个interceptor或者filter拦截所有请求,然后判断参数是否合理, ...