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‘>
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)

[‘1‘, ‘2‘, ‘60‘, ‘40.35‘, ‘5‘, ‘4‘, ‘3‘]
[‘1‘, ‘2‘, ‘60‘, ‘5‘, ‘4‘, ‘3‘]

原文地址:https://www.cnblogs.com/wqzn/p/9494390.html

时间: 2024-11-13 09:55:51

re模块下的的常用方法的相关文章

HP C7000 Virtual Connect FlexFabric模块下Windows2008R2网络连接查看与配置

Windows2008R2网络属性查看与配置实例 前提: 1:C7000互联模块Bay1和Bay2配置FlexFabric模块 2:Enclosure Server Bay1:插有一个HP BL460g8服务器(LOM卡支持FlexFabric功能) 3:在VC中配置Server Profile赋予Bay1,配置内容包括:划分2个FlexNIC和2个FlexHBA. 具体步骤: 当我们在VC-FlexFabric中配置Ethernet Network和FCoE SAN Fabric后,将新创建的

Python re模块下的常用方法

import re # findall # search # match # ret = re.findall('a','eva egon yuan') # # 返回所有满足条件的结果,放在列表里 # print(ret) # ret = re.search('a','eva egon yuan') # if ret: # print(ret.group()) # # 从前往后,找到一个就返回,返回的变量需要调用group才能拿到结果 # # 如果没有找到,那么返回None,调用group会报错

os与sys模块的作用与常用方法

os与sys模块的官方解释如下: os:这个模块提供了一种方便的使用操作系统函数的方法. sys:这个模块可供访问由解释器使用或维护的变量和与解释器进行交互的函数. 总结:os模块负责程序与操作系统的交互,提供了访问操作系统底层的接口;sys模块负责程序与python解释器的交互,提供了一系列的函数和变量,用于操控python的运行时环境. os 常用方法: os.remove('path/filename') 删除文件 os.rename(oldname, newname) 重命名文件 os.

python学习笔记六之模块下(基础篇)

shevle 模块 扩展pickle模块... 1.潜在的陷进 >>> import shelve>>> s = shelve.open("nb") >>> s['x'] = ['a','b','c'] >>> s['x'].append('d') >>> s['x'] ['a', 'b', 'c'] 解析:当你在shelve对象中查找元素的时候,这个对象都会根据已经存储的版本进行重新构建,当你将

yii2 restfulapi moudules 模块下的接口

之前写的apicontroller都是在根目录下的controllers 但是我们也会在moudules下建立接口 1.我们用gii建立一个模块叫test 2.生成之后,按照提示,将下面这段话,放到main.php的modules下 'test' => [            'class' => 'backend\modules\test\test',        ], 3.在test的controllers下创建一个接口文件usercontroller.php 4.访问index跟之前

Python multiprocess模块(下)

主要内容: 一. 锁 二. 信号量 三. 事件 通过event来完成红绿灯模型 四. 队列(重点) 队列实现进程间的通信 五. 生产者消费者模型 1. 初始版本(程序会阻塞住) 2. 升级版本一(通过抛出异常信号的方式结束进程) 3. 升级版本二(通过发送结束信号的方式结束进程) 第一种: 生产者发结束信号 第二种: 主进程发结束信号 4. 升级版本三(有多个消费者和生产者的时候需要发送多次结束信号) 六. JoinableQuene实现生产者消费者模型 一. 进程同步(锁) 在之前muitip

robot framework 如何自己写模块下的方法或者库

一.写模块(RF能识别的模块) 例如:F:\Python3.4\Lib\site-packages\robot\libraries这个库(包)下面的模块(.py),我们可以看下源码 注意:这种是以方法来组成的那么就需要按照一些规则 说明: __all__:这里面写的就是RF能识别的方法,有时可能你有100个方法,但是你只想RF识别20个,另外80个方法你可以以_下划线开头命名方法,然后你要把RF能识别的20个方法写到__all__里面,记得名称和方法名称一致. __version__:版本名,可

Intellij IDEA Debug 多模块下断点目标源问题

Ctrl+Alt+S进入Settings,选择Debugger->show alternative source switcher 勾选,开启显示替代源选择器 由于项目工程存放了多个应用模块,包括app模块 cms模块,并存在小部分代码相同的情况下,会出现断点跳转至不正确的目标源,此时开启源选择器,即可手动选择,如图: 原文地址:https://www.cnblogs.com/shengulong/p/11525432.html

java中获得src路径下文件的常用方法

在代码中一般读取src下的配置文件 读取src路径下的log4j.properties和message.properties 读取message.properties文件并将properties中的键值对转为map PropertiesServlet.class.getClassLoader().getResourceAsStream("/message.properties");返回值是一个InputStream   /**      * 根据java标准properties文件读取