Python中的re模块之正则表达式模块常用方法

 更新时间:2023年08月04日 16:26:15   作者:常家壮  
re模块是Python中使用正则表达式的最基础的模块,re模块的这些功能覆盖了正则表达式的常见用法,使用re模块可以简化字符串的模式匹配、信息提取、过滤替换、切分等操作,本文给大家介绍正则表达式模块常用方法,感兴趣的朋友跟随小编一起看看吧

re模块介绍:

Python的re模块提供了正则表达式的功能,可以用来进行高级的字符串匹配和处理。re模块的主要功能包括:

  • 编译正则表达式 - 使用re.compile()可以编译正则表达式字符串,生成正则表达式对象。
  • 匹配字符串 - 使用正则表达式对象的match()、search()、findall()等方法可以在字符串进行匹配。
  • 替换字符串 - 使用sub()和subn()方法可以使用正则表达式进行字符串替换。
  • 分割字符串 - 使用split()方法可以按照正则表达式的匹配结果分割字符串。
  • 获取匹配信息 - match对象包含了各种匹配信息,如匹配字符串、位置等。
  • 标志 - 可以使用标志来修改正则表达式的匹配方式,如忽略大小写,多行匹配等。
  • 模块级函数 - re模块还提供了模块级的正则匹配函数,如escape()可以对字符串转义。

re模块的这些功能覆盖了正则表达式的常见用法。使用re模块可以简化字符串的模式匹配、信息提取、过滤替换、切分等操作

需要注意的一点是,re模块主要针对ASCII字符,对Unicode的支持不太友好。此时可以考虑第三方模块如regex

总之,re模块是Python中使用正则表达式的最基础的模块,非常值得学习和掌握

Python re模块详解

re模块提供正则表达式模式匹配操作,主要有以下函数:

match()

匹配字符串开头位置,返回match对象或None:

import re
m = re.match('foo','foo') 
print(m.group()) # 'foo'
m = re.match('foo','bar')
print(m) # None

search()

搜索字符串任意位置,返回match对象或None:

m = re.search('foo','hello food')
print(m.group()) # 'foo'

findall()

搜索字符串,返回所有匹配的列表:

m = re.findall('\d','123abc456')
print(m) # ['1', '2', '3', '4', '5', '6']

sub()

使用正则表达式进行字符串替换:

text = re.sub('\d', '0', '123abc456')
print(text) # '000abc000' 

split()

使用正则表达式进行字符串分割:

m = re.split('\d+', '123abc456') 
print(m) # ['abc', '']

compile()

编译正则表达式,返回pattern对象:

pat = re.compile('\d') 
m = pat.match('123')

finditer()

在Python的re模块中,re.finditer()是非常有用的一个正则表达式匹配函数。

re.finditer()的作用是在字符串中找到所有的匹配,并返回一个迭代器。相比re.findall()re.finditer()有以下区别:

  • re.findall():返回一个匹配字符串的列表
  • re.finditer():返回一个匹配对象迭代器

示例:

import re
s = 'hello 123 456 world'
matches = re.findall('\d+', s)
print(matches) # ['123', '456']
iterator = re.finditer('\d+', s)
print(iterator) # <callable_iterator object at 0x10f5f3b50>
for match in iterator:
    print(match) 
# <re.Match object; span=(6, 9), match='123'>
# <re.Match object; span=(10, 13), match='456'>

re.finditer()的返回对象是一个迭代器,每次迭代返回一个Match对象,包含匹配的字符串和位置。

主要优点是:

  • 不需要先存储所有匹配,更save内存
  • 可以逐个访问每个匹配
  • 提供了匹配的位置信息

所以在需要定位每个匹配的位置时,re.finditer()非常有用。

fullmatch()

匹配整个字符串,返回match对象或None:

import re
m = re.fullmatch('foo','foo')
print(m.group()) # 'foo' 
m = re.fullmatch('foo','foo bar')  
print(m) # None

escape()

将特殊字符转义,可以将字符串转化为正则表达式的字符串形式:

escaped = re.escape('http://example.com')  
print(escaped) # 'http:\/\/example\.com'

purge()

清除缓存的正则表达式,可以避免重复编译正则表达式:

pat = re.compile(r'\d+')
re.purge() # 清除缓存

match.expand()

使用匹配到的组内容,替换字符串模板:

m = re.match(r'(?P<name>\w+) (\w+)', 'John Doe')
print(m.expand('Hello \g<name>')) # 'Hello John'

(?P\w+)和 group(“name”) 搭配使用

import re
pattern = r'(?P<first_name>\w+) (?P<last_name>\w+)'
string = 'John Doe'
# 匹配字符串
m = re.match(pattern, string)
# 使用命名组获取匹配
first_name = m.group('first_name') 
last_name = m.group('last_name')
print(first_name) # John
print(last_name) # Doe
# 替换字符串
new_string = re.sub(pattern, r'\g<last_name>, \g<first_name>', string)
print(new_string) # Doe, John

在这个例子中,正则表达式模式使用了两个命名捕获组first_name和last_name。

然后在获取匹配后,可以直接通过命名引用匹配的内容。

在替换字符串时,也可以利用命名组引用,使代码更简洁清晰。

所以命名捕获组可以让正则匹配和处理更高效方便。

以上是re模块的常用函数

到此这篇关于Python-re模块-正则表达式模块常用方法的文章就介绍到这了,更多相关Python正则表达式模块内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python3+mysql查询数据并通过邮件群发excel附件

    python3+mysql查询数据并通过邮件群发excel附件

    这篇文章主要为大家详细介绍了python3+mysql查询数据,并通过邮件群发excel附件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02
  • 如何在Python对Excel进行读取

    如何在Python对Excel进行读取

    这篇文章主要介绍了如何在Python对Excel进行读取,文中讲解非常详细,示例代码帮助大家参考学习,感兴趣的朋友可以了解下
    2020-06-06
  • Python各种类型装饰器详细介绍

    Python各种类型装饰器详细介绍

    大家好,本篇文章主要讲的是Python各种类型装饰器详细介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • Python利用Beautiful Soup模块创建对象详解

    Python利用Beautiful Soup模块创建对象详解

    这篇文章主要介绍了Python利用Beautiful Soup模块创建对象的相关资料,文中介绍的非常详细,相信对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。
    2017-03-03
  • Python高级语法之推导式+迭代器+生成器案例代码

    Python高级语法之推导式+迭代器+生成器案例代码

    文章介绍了Python中的推导式和生成器,推导式用于简洁地构建容器,而生成器是一种惰性求值的迭代器,适用于处理大数据集,感兴趣的朋友跟随小编一起看看吧
    2026-01-01
  • Python 操作文件的基本方法总结

    Python 操作文件的基本方法总结

    这篇文章主要介绍了Python 操作文件的基本方法总结的相关资料,这里说明了九种操作文件的方法,并附上实现方法,需要的朋友可以参考下
    2017-08-08
  • python解析xml文件操作实例

    python解析xml文件操作实例

    这篇文章主要介绍了python解析xml文件操作实例,是操作XML文件的常见技巧,需要的朋友可以参考下
    2014-10-10
  • Pytorch如何打印与Keras的model.summary()类似的输出(最新推荐)

    Pytorch如何打印与Keras的model.summary()类似的输出(最新推荐)

    这篇文章主要介绍了Pytorch如何打印与Keras的model.summary()类似的输出,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • 使用Python实现将网址生成二维码

    使用Python实现将网址生成二维码

    qrcode 是指二维码(Quick Response Code)的一种编码方式,它是一种特定的条码格式,可以存储比传统条码更多的信息,下面我们就来看看如何使用Python实现将网址生成二维码吧
    2026-06-06
  • Python学习笔记之错误和异常及访问错误消息详解

    Python学习笔记之错误和异常及访问错误消息详解

    这篇文章主要介绍了Python学习笔记之错误和异常及访问错误消息,结合实例形式分析了Python错误和异常及访问错误消息try...except语句相关使用技巧,需要的朋友可以参考下
    2019-08-08

最新评论