Python-re模块-正则表达式模块常用方法

这篇具有很好参考价值的文章主要介绍了Python-re模块-正则表达式模块常用方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

re模块介绍:

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

  1. 编译正则表达式 - 使用re.compile()可以编译正则表达式字符串,生成正则表达式对象。

  2. 匹配字符串 - 使用正则表达式对象的match()、search()、findall()等方法可以在字符串进行匹配。

  3. 替换字符串 - 使用sub()和subn()方法可以使用正则表达式进行字符串替换。

  4. 分割字符串 - 使用split()方法可以按照正则表达式的匹配结果分割字符串。

  5. 获取匹配信息 - match对象包含了各种匹配信息,如匹配字符串、位置等。

  6. 标志 - 可以使用标志来修改正则表达式的匹配方式,如忽略大小写,多行匹配等。

  7. 模块级函数 - 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模块的常用函数文章来源地址https://www.toymoban.com/news/detail-629974.html

到了这里,关于Python-re模块-正则表达式模块常用方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Python 正则表达式RE知识学习

    正则表达式(Regular Expression)是一种强大的文本模式匹配工具,常用于在字符串中查找、替换、分割等操作。在 Python 中,可以使用内置的 re 模块来操作正则表达式。 字符匹配: 普通字符:正则表达式中的普通字符(如字母、数字、特殊字符)与字符串中的对应字符进行匹

    2024年02月09日
    浏览(45)
  • Python:正则表达式之re.group()用法

    Python正则表达式之re.group()用法学习笔记 正则表达式是在处理字符串时非常有用的工具,而re.group()是在匹配到的文本中提取特定分组内容的方法之一。 在正则表达式中,通过圆括号可以创建一个或多个分组。re.group()用于获取匹配到的文本中的指定分组内容。 输出结果: grou

    2024年01月17日
    浏览(11)
  • 006集 正则表达式 re 应用实例—python基础入门实例

    006集 正则表达式 re 应用实例—python基础入门实例

    正则表达式指预先定义好一个 “ 字符串模板 ” ,通过这个 “ 字符串模 板” 可以匹配、查找和替换那些匹配 “ 字符串模板 ” 的字符串。 Python的中 re 模块,主要是用来处理正则表达式,还可以利用 re 模块通过正则表达式来进行网页数据的爬取和存储。 正则表达式的英文

    2024年02月01日
    浏览(14)
  • python re.findall和re.search同样的正则表达式,为什么规则不一样??

    今天遇到一个问题,在使用python的re.findall和re.search的过程中,发现一个奇怪的事情,同样的表达式,两者的表现却不一样,例如下述代码: res1是我所希望的结果,然后查了一段时间的原因,发现二者是在使用捕获分组(xxx)和非捕获分组(?:xxx)有区别,re.search使用的是非捕获方

    2024年02月16日
    浏览(13)
  • re --- 正则表达式操作

    模式和被搜索的字符串既可以是 Unicode 字符串 (str) ,也可以是8位字节串 (bytes)。 但是,Unicode 字符串与 8 位字节串不能混用:也就是说,不能用字节串模式匹配 Unicode 字符串,反之亦然;同理,替换操作时,替换字符串的类型也必须与所用的模式和搜索字符串的类型一致。

    2024年02月08日
    浏览(11)
  • 【从零学习python 】63.正则表达式中的re.Match类及其属性和方法介绍

    当我们调用 re.match 方法、 re.search 方法,或者对 re.finditer 方法的结果进行迭代时,拿到的数据类型都是 re.Match 对象。 这个类里定义了相关的属性,可以直接让我们来使用。 属性和方法 说明 pos 搜索的开始位置 endpos 搜索的结束位置 string 搜索的字符串 re 当前使用的正则表达

    2024年02月11日
    浏览(24)
  • 正则表达式 re库的使用

    模式 描述 ^ 匹配 字符串的开始 w 匹配 字母数字及下划线 W 匹配 非 字母数字及下划线 s 匹配 任意空白字符,即空格 S 匹配 任意 非空 字符 d 匹配 任意数字,等价于[0-9], d+ 表示匹配多个数字 D 匹配 任意 非 数字 A 匹配字符串开始 Z 匹配字符串结束,如果是存在换行,

    2024年02月10日
    浏览(48)
  • 8.网络爬虫—正则表达式RE实战

    8.网络爬虫—正则表达式RE实战

    前言 : 🏘️🏘️个人简介:以山河作礼。 🎖️🎖️:Python领域新星创作者,CSDN实力新星认证 📝​📝​此专栏文章是专门针对网络爬虫基础,欢迎免费订阅! 📝​📝第一篇文章《1.认识网络爬虫》获得 全站热榜第一 ,python 领域热榜第一 , 第四篇文章《4.网络爬虫—

    2023年04月08日
    浏览(9)
  • Python re.findall()中的正则表达式包含多个括号时的返回值——包含元组的列表

    当 re.findall() 中的正则表达式包含多个括号时,返回值是一个列表,其中每个元素都是一个元组。这个元组的长度与正则表达式中括号的数量相同,元组中的每个元素都是与相应括号中的模式匹配的文本。 输出:

    2024年02月19日
    浏览(16)
  • 【SQL-正则】利用正则表达式进行过滤操作(常用正则表达式)

    1、由数字、26个英文字母或者下划线组成的字符串 2、非负整数(正整数 + 0 ) 3、正整数 4、非正整数(负整数 + 0) 5、负整数 6、整数 7、非负浮点数(正浮点数 + 0) 8、正浮点数 9、非正浮点数(负浮点数 + 0) 10、负浮点数 11、浮点数 12、由26个英文字母组成的字符串 13、

    2024年02月12日
    浏览(20)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包