Python中re模块常用方法总结分析
作者:季布, 发布时间:2022-10-27 14:40:20
re.findall()
在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。
语法格式:
re.findall(pattern, string, flags=0)
参数:pattern
:匹配字符串的正则。string
:待匹配的字符串。
示例:
需求:查找字符串中的所有数字
result = re.findall(r'\d+','1python2hello3')
print(result)
结果
['1', '2', '3']
result = re.findall(r'p%','helloP%ython')
print(result)
结果
[] #因为要匹配的字符串P% 和正则p%不匹配,所以返回空
result = re.findall(r'p%','helloP%ython',re.I)
print(result)
结果
[P%]
re.sub()
语法:
re.sub(pattern, repl, string, count=0, flags=0)
参数:pattern
: 正则中的模式字符串。repl
: 替换的字符串,也可为一个函数。string
: 要被查找替换的原始字符串。count
: 模式匹配后替换的最大次数,默认 0 表示替换所有的匹配。
result = re.sub(r'python','world','hellopython')
print(result)
结果
helloworld
repl 参数是一个函数
#需求:将匹配到结果中小于4的替换成8,大于4的替换成9
import re
def modify(value):
matched = value.group()
if int(matched) <= 4:
return '8'
else:
return '9'
str = 'ab12cd34ef567'
result = re.sub('\d', modify, str)
print(result )
结果
ab88cd88ef999
使用场景:可以对匹配成功要替换的部分做操作
re.compile
当我们在Python中使用正则表达式时,re模块内部:
1)编译正则表达式,如果正则表达式的字符串本身不合法,会报错;
2)用编译后的正则表达式去匹配字符串。
那么如果一个正则表达式要重复使用几千次,出于效率的考虑,我们是不是应该先把这个正则先预编译好,接下来重复使用时就不再需要编译这个步骤了,直接匹配,提高我们的效率
compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用。
语法格式为:
re.compile(pattern[, flags])
参数:pattern
: 一个字符串形式的正则表达式flags
: 可选,表示匹配模式,比如忽略大小写,多行模式等,
str = 'ab12cd34ef567'
info = re.compile(r'([a-z]{2})(\d{2})')
result = info.match(str).group()
result1 = info.match(str).groups()
print(result)
print(result1)
结果
ab12
('ab', '12')
re.match
re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。
语法
re.match(pattern, string, flags=0)
参数:pattern
:匹配的正则表达式string
:要匹配的字符串。flags
: 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等
str = 'ab12cd34ef567'
info = re.compile(r'([a-z]{2})(\d{2})')
result = info.match(str).group()
result1 = info.match(str).groups()
print(result)
print(result1)
结果
ab12
('ab', '12')
str1 = '0b12cd34ef567'
result1 = info.match(str1).group()
print(result1)
结果: 会报错
AttributeError: 'NoneType' object has no attribute 'group'
re.search
re.search 扫描整个字符串并返回第一个成功的匹配。
参数:pattern
:匹配的正则表达式string
:要匹配的字符串。flags
:标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等
str = 'ab12cd34ef567'
info = re.compile(r'([0-9]{2})')
result = info.search(str).group()
print(result)
结果
12
re.match与re.search的区别
re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;
re.search匹配整个字符串,直到找到一个匹配。
re.split
split 方法按照能够匹配的子串将字符串分割后返回列表
语法
re.split(pattern, string[, maxsplit=0, flags=0])
参数:pattern
: 匹配的正则表达式string
:要匹配的字符串。flags
:标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等
str = 'abc def g hi'
result = re.split('\W+',str)
print(result)
结果
['abc', 'def', 'g', 'hi']
来源:https://blog.csdn.net/weixin_47906106/article/details/120054698
猜你喜欢
- 本文实例为大家分享了微信小程序实现星星评价效果的具体代码,供大家参考,具体内容如下代码实现wxml文件<!--pages/evalua
- 快捷键可以帮助我们有效提高效率,我们来看看网页设计软件FrontPage有哪些快捷键。相关文章:Dreamweaver快捷键大全、photo
- 看看下面的w3 upload组件例子,很简单: upload.asp<html> <head>
- CREATE TABLE `category` ( `Id` binary(1
- 如何用WSH获取机器的IP配置信息?我们用VBSCRIPT转换了: Option Explicit Dim&n
- golang并没有像C语言一样提供三元表达式。三元表达式的好处是可以用一行代码解决原本需要多行代码才能完成的功能,让冗长的代码瞬间变得简洁。
- HTTP-REFERER这个变量已经越来越不可靠了,完全就是可以伪造出来的东东。 以下是伪造方法:ASP/Visual Basic代码 di
- 制作圆角导航其实跟制作圆角边框是一样的道理,有一种很常见的方法就是使用CSS绝对定位,切四个圆角的小图片,然后分别定位在四个角,这样就可以实
- 字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,
- 有在论坛上看到一帖,《请教查询出连续日期记录的方法》,截图如下:Insus.NET尝试写了程序并做了测试,可以得到预期的结果,SQL代码可参
- 在第1章项目结构分析中,我们提到Startup.cs作为整个程序的入口点,等同于传统的Global.asax文件,即:用于初始化系统级的信息
- 在安装依然主机管理系统时,因为当时导入MSSQL时有点问题,所以,为了赶快能用上管理功能,所以就暂时先用了Access数据库。不过一直以来都
- ASP 错误代码 说明 ASP 0100 内存不足 ASP 0101 意外错误 ASP 0102 需要字符串输入 ASP 0103 需要数字
- javascript中的数组对象捆绑了强大的方法因此它可以用很简短的代码实现强大的数组操作而这些功能要C或者c++实现的话可能需要花费几倍的
- 导言到目前为止,我们探讨的教程是由表现层,业务逻辑层和数据访问层构成的层次体系结构。数据访问层和业务逻辑层分别在教程第一和第二章提到。在Di
- 使用ASP做网站虽然有点落伍,但在中国还是有很大市场的,因为大部分国内用户使用Windows Server服务器,在Windows Serv
- ASP与MySQL的连接ASP和MySQL连接目前有两种方法:一种方法是使用MySQLX之类的组件,不过这种连接方法需要支付一定的费用;另外
- 希腊Web 设计师Christos Chiotis 发表在 CssGlobe 的一篇文章,讲述了黄金分割率在 CSS 中的应用。黄金分割率是
- SQL Server2005扩展函数已经不是一件什么新鲜的事了,但是我看网上的大部分都是说聚合函数,例子也比较浅,那么这里就讲讲我运用扩展函
- 用FrontPage做网页的朋友们,你的主要页面中,可能都带有许多相同的元素吧?如页头横向排列(或左侧纵向排列)的主要链接按钮、页底的板权说