Python中re模块常用方法总结分析

 更新时间:2021年09月13日 14:01:46   作者:季布,  
这篇文章主要为大家介绍了Python中re模块常用方法,并对这些常用方法进行总结分析,有需要的朋友可以借鉴参考下,希望能够有所帮助

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']

以上就是Python中re模块常用方法总结分析的详细内容,更多关于Python中re模块常用方法的资料请关注脚本之家其它相关文章!

相关文章

  • Django配置跨域并开发测试接口

    Django配置跨域并开发测试接口

    这篇文章主要介绍了Django配置跨域并开发测试接口,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • python输出后面多一个None问题

    python输出后面多一个None问题

    在Python中,函数如果没有显式指定返回值,会默认返回`None`,例如,计算一个数的平方根并输出,如果没有处理`None`,会输出结果后跟`None`
    2024-11-11
  • Python实现FTP弱口令扫描器的方法示例

    Python实现FTP弱口令扫描器的方法示例

    这篇文章主要介绍了Python实现FTP弱口令扫描器的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • 实例讲解Python的函数闭包使用中应注意的问题

    实例讲解Python的函数闭包使用中应注意的问题

    这里我们来以实例讲解Python的函数闭包使用中应注意的问题,主要针对闭包后新生成的变量来不及初始化而导致找不到变量的错误出现,需要的朋友可以参考下
    2016-06-06
  • python递归法实现简易连连看小游戏

    python递归法实现简易连连看小游戏

    这篇文章主要为大家详细介绍了python递归法实现简易连连看小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • Python中文竖排显示的方法

    Python中文竖排显示的方法

    这篇文章主要介绍了Python中文竖排显示的方法,可实现Python将中文竖排输出显示的功能,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • Python监测屏幕界面内容变化并发送通知方法详解

    Python监测屏幕界面内容变化并发送通知方法详解

    这篇文章主要为大家介绍了Python监测屏幕界面内容变化并发送通知,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • python一秒搭建FTP服务器

    python一秒搭建FTP服务器

    今天给大家分享一篇教程关于python一秒搭建FTP服务器的教程,在搭建过程中需要用到pyftpdlib模块,对python FTP服务器搭建过程感兴趣的朋友跟随小编一起看看吧
    2021-05-05
  • Python解析网页源代码中的115网盘链接实例

    Python解析网页源代码中的115网盘链接实例

    这篇文章主要介绍了Python解析网页源代码中的115网盘链接实例,主要采用了正则表达式re模块来实现该功能,需要的朋友可以参考下
    2014-09-09
  • Python多线程同步---文件读写控制方法

    Python多线程同步---文件读写控制方法

    今天小编就为大家分享一篇Python多线程同步---文件读写控制方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02

最新评论