re模块下的的常用方法
引入模块:
import re
1.查找
findall 匹配所有,每一项都是列表中的一个元素
ret=re.findall("\d+","sjkhk172按实际花费928")
print(ret)
['172', '928']
search 只匹配从左到右的第一个,得到的不是结果,而是一个变量,通过这个变量的group方法来获取结果。
ret=re.search("\d+","sjkhk172按实际花费928")
print(ret)
print(ret.group())
<_sre.SRE_Match object; span=(5, 8), match=''>
172
ret=re.search("\d+","sjkhk172按实际花费928")
if ret:#内存地址,这是一个正则的匹配结果
print(ret.group())#获取真正的结果
172
match 从头开始匹配,相当于search中的正则表达式加上一个^
ret=re.match("\d+$",'172sjkhk按实际花费928')
print(ret)
None
ret=re.match("\d+",'172sjkhk按实际花费928')
print(ret)
print(ret.group())
<_sre.SRE_Match object; span=(0, 3), match='172'>
172
字符串处理的扩展:切割、替换
split 切割
s = 'alex83taibai40egon25'
# ret = re.split('\d+',s)
# print(ret) ['alex', 'taibai', 'egon', '']
sub 替换 旧的 新的 替换次数
ret = re.sub('\d+','h','alex83taibai40egon25',2)
print(ret)
alexhtaibaihegon25
subn 返回一个元组,返回的第二个元素是替换的次数
ret = re.subn('\d+','H','alex83taibai40egon25')
print(ret)
('alexHtaibaiHegonH', 3)
re模块的进阶 时间 空间
compile 节省使用正则表达式解决时间问题 把正则表达式编译成字节码,在以后的多次使用过程中不会多次编码
ret=re.compile("\d+")
res=ret.findall("alex83taibai40egon25")
print(res)
['83', '40', '25']
res=ret.search("sjkhk172按实际花费928")
print(res.group())
172
finditer 节省正则表达式解决问题的内存或者空间
返回一个迭代器,所有的结果都在这个迭代器中,需要通过循环+group的形式取值 能够节省内存
ret=re.finditer("\d+","alex83taibai40egon25")
for i in ret:
print(i.group())
83
40
25
分组在ret模块下的使用
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)) <a>wahaha</a>
a
wahaha
a
s = '<a>wahaha</a>'
ret=re.findall('(\w+)',s )
print(ret)
ret=re.findall('>(\w+)<',s)
print(ret) ['a', 'wahaha', 'a']
['wahaha']
为了findall也可以顺利取到分组中的内容,有一个特殊的语法,就是优先显示分组中的内容
# 取消分组优先(?:正则表达式)
ret = re.findall('\d+(\.\d+)?','1.234*4')
print(ret)
['.234', '']
# 分组命名 (?P<这个组的名字>正则表达式)
# s = '<a>wahaha</a>'
# ret = re.search('>(?P<con>\w+)<',s)
# print(ret.group(1))
# print(ret.group('con'))
使用前面的分组 要求使用这个名字的分组和前面同名分组中的内容匹配的必须一致
精准的取到整数 过滤掉小数 ret=re.findall(r"\d+\.\d+|\d+","1-2*(60+(-40.35/5)-(-4*3))")
print(ret)
ret=re.findall(r"\d+\.\d+|(\d+)","1-2*(60+(-40.35/5)-(-4*3))")
ret.remove('')
print(ret) ['', '', '', '40.35', '', '', '']
['', '', '', '', '', '']
re模块下的的常用方法的更多相关文章
- Flex4分模块下样式动态加载步骤及相关问题的解决
1. 给应用程序编写CSS文件 (1)在项目下创建CSS文件(任意路径,可以多个).本例在src下创建了5个样式文件 (2)Flex支持的CSS文件定义如下: a) type selector(类 ...
- thinkphp6.0 多应用模块下提示控制器不存在
thinkphp6.0 多应用模块下提示控制器不存在 在项目根目录下使用Composer composer require topthink/think-multi-app 参考链接
- re模块下的常用方法
一 : re模块的查找 findall 优先级查找 返回列表 找所有的匹配项(从大段的内容中找匹配到的项目) import re str = "qwer asdf zxcv qwer ...
- os和sys模块的区别及其常用方法总结
官方解释:os: This module provides a portable way of using operating system dependent functionality. 翻译:提 ...
- python学习笔记五 模块下(基础篇)
shevle 模块 扩展pickle模块... 1.潜在的陷进 >>> import shelve>>> s = shelve.open("nb" ...
- phpcms v9 源码解析(4)content模块下的index.php文件的init()方法解析
在了解index.php中的init函数的时候,让我们先看看最开始的几行代码 1-5 第二行, defined('IN_PHPCMS') or exit('Nopermission resource ...
- “死锁” 与 python多线程之threading模块下的锁机制
一:死锁 在死锁之前需要先了解的概念是“可抢占资源”与“不可抢占资源”[此处的资源可以是硬件设备也可以是一组信息],因为死锁是与不可抢占资源有关的. 可抢占资源:可以从拥有他的进程中抢占而不会发生副作 ...
- 摘要算法---hashlib模块下MD5和SHA的使用
作用: 任意长度的字符串内容通过摘要算法都可以生成唯一序列摘要值,通过摘要算法,可以校验某个文档或者某组字符串是否被修改. 应用: 1.文件内容一致性校验 2.用户登录验证 常用方法 update() ...
- Yii2访问自定义模块下的controller
之前,由于所要访问的controller都是位于根目录下的controllers目录下,就像下面这样: 此时,我们可以直接通过 localhost/basic/web/index.php?r=dao/ ...
随机推荐
- mysql数据库连接错误10060
今天在使用mysql数据库的时候,出现错误ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10060) 我在网上一顿 ...
- Delphi XE2 之 FireMonkey 入门(31) - 数据绑定: 绑定数据库
Delphi XE2 之 FireMonkey 入门(31) - 数据绑定: 绑定数据库 一.全设计时操作: 先在窗体上放置控件: DataSource1 : TDataSource; Clie ...
- JavaScript对象的常用属性及使用
什么是浏览器对象模型? 浏览器对象模型(BOM Browser Object Model)是JavaScript的组成之一,它提供了独立于内容和浏览器窗口进行交互的对象,使用浏览器对象模型可以实现与H ...
- Eclipse 添加 UML Model插件
1.下载安装 ModelGson 下载链接:https://pan.baidu.com/s/1smIZApv 密码:mu5l eclipse安装ModelGson(注意不用解压ModelGson, ...
- 002-Django数据库及后台admin配置
连接mysql数据库 数据库准备 如果连接本机数据库,mysql安装及配置可参考https://www.cnblogs.com/feizisy/p/11882521.html 如果连接阿里云RDS,需 ...
- springboot(3) 页面到服务器
第一讲实现了spring boot 环境的下载及配置. 第二讲实现了,从服务器,到页面. 第三讲打算从页面到服务器. 比如,我们希望 从页面,点击一个按钮,传递信息到服务器. 就拿传递用户名和密码来简 ...
- CF 686D. Kay and Snowflake
给你一个树N个点,再给出Q个询问,问以x为根的子树中,重心是哪个?2≤n≤300000,1≤q≤30000 Sol:从下到上,根据性质做一下.1:如果某个点x,其子树y的大小超过总结点个数一半,则重心 ...
- 20191128 Spring Boot官方文档学习(9.9)
9.9.数据存取 Spring Boot包含许多用于处理数据源的启动器. 9.9.1.配置自定义数据源 要配置自己的DataSource,请在配置中定义该类型的@Bean.Spring Boot可以在 ...
- exosip2 build
Build eXosip on Win 1. download exosip http://savannah.nongnu.org/projects/exosip/ 2. download libc ...
- 分布式均匀算法--hash性一致算法--hash slot(转)
目录 1.redis cluster介绍 2.最老土的hash算法和弊端(大量缓存重建) 3.一致性hash算法(自动缓存迁移)+虚拟节点(自动负载均衡) 不用遍历 --> hash算 ...