怎么在Python的正则表达式中找到每个匹配的确切位置

 更新时间:2026年01月06日 11:04:27   作者:qq_25153359  
Python正则表达式是一种用于字符串匹配和操作的工具,它通过定义一系列的字符组合规则来实现对文本的查找、替换等操作,这篇文章主要介绍了怎么在Python的正则表达式中找到每个匹配的确切位置,需要的朋友可以参考下

简介

re 模块是我们在 Python 中用于正则表达式的模块。文本搜索和更复杂的文本操作都使用正则表达式。grep 和 sed 等工具、vi 和 emacs 等文本编辑器以及 Tcl、Perl 和 Python 等计算机语言都具有内置的正则表达式支持。

Python 中的 re 模块提供用于匹配正则表达式的函数。

定义我们要查找或修改的文本的正则表达式称为模式。文本文字和元字符组成了这个字符串。编译函数用于创建模式。建议使用原始字符串,因为正则表达式经常包含特殊字符。(r 字符用于指示原始字符串。)字符在组装成模式之前不会以这种方式解释。

其中一个函数可用于在模式组合后将模式应用于文本字符串。可用的函数包括 Match、search、find 和 finditer。

使用的语法

此处使用的正则表达式函数是:我们使用正则表达式函数查找匹配项。

  • re.match():确定 RE 是否在字符串开头匹配。如果字符串开头的零个或多个字符与正则表达式模式匹配,则 match 方法返回匹配对象。
  • p.finditer():查找 RE 匹配的所有子字符串并将它们作为迭代器返回。迭代器在字符串中为模式的所有非重叠匹配项提供匹配对象是 finditer 方法的结果。
  • re.compile():将正则表达式模式编译为正则表达式对象,可以使用其 match()、search() 和下面描述的其他方法进行匹配。可以通过指定标志的值来修改表达式的行为。值可以是使用按位或(| 运算符)组合的以下任何变量。
  • m.start():m.start() 返回匹配开始时字符串中的偏移量。
  • m.group():当 mo.groups() 返回一组值时,您可以使用多重赋值方法将每个值分配给不同的变量,如下面的 areaCode, mainNumber = mo.groups() 行中所示。
  • search:它与 re.match() 类似,但不要求我们只在文本开头查找匹配项。search() 函数可以在字符串中的任何位置定位模式,但它只返回模式的第一个实例。

算法

  • 使用 import re 导入 regex 模块。

  • 使用 re.compile() 函数创建 Regex 对象。(记得使用原始字符串。)

  • 将要搜索的字符串传递给 Regex 对象的 finditer() 方法。这将返回一个 Match 对象。

  • 调用 Match 对象的 group() 方法返回实际匹配文本的字符串。

  • 我们还可以使用 span() 方法获取单个元组中的开始和结束索引。

示例

#importing re functions
import re
#compiling [A-Z0-9] and storing it in a variable p
p = re.compile("[A-Z0-9]")
#looping m times in p.finditer
for m in p.finditer('A5B6C7D8'):
#printing the m.start and m.group
   print m.start(), m.group()

输出

这给出了输出 -

0 A
1 5
2 B
3 6
4 C
5 7
6 D
7 8

代码说明

使用 import re 导入 regex 模块。使用 re.compile() 函数创建一个 Regex 对象("[A-Z0-9]")并将其分配给变量 p。对 m 运行循环并将要搜索的字符串传递到 Regex 对象的 finditer() 方法中。这将返回一个 Match 对象。调用 Match 对象的 m.group() 和 m.start() 方法返回实际匹配文本的字符串。

示例

# Python program to illustrate
# Matching regex objects
# with groups
import re
phoneNumRegex = re.compile(r'(\d\d\d)-(\d\d\d-\d\d\d\d)')
mo = phoneNumRegex.search('My number is 415-555-4242.')
print(mo.groups())

输出

这给出了输出 -

('415', '555-4242')

代码说明

使用 import re 导入 regex 模块。使用 re.compile() 函数创建一个 Regex 对象 (r'(\d\d\d)-(\d\d\d-\d\d\d\d)'),并将其赋值给变量 phoneNumRegex。将要搜索的字符串传入 Regex 对象的 search() 方法,并将其存储在变量 mo 中。这将返回一个 Match 对象。调用 Match 对象的 mo.groups() 方法返回实际匹配文本的字符串。

结论

Python re 模块提供的 search()、match() 和 finditer() 方法允许我们匹配正则表达式模式,如果匹配成功,它将提供 Match 对象实例。利用 start()、end() 和 span() 方法使用此 Match 对象检索有关匹配字符串的详细信息。

当有许多匹配项时,如果使用 findall() 加载所有匹配项,则存在 RAM 过载的危险。您可以以迭代器对象的形式获取所有潜在匹配项,而不是使用 finditer() 方法,这将提高效率。

这意味着 finditer() 提供了一个可调用对象,当调用该对象时,它会将结果加载到内存中。

到此这篇关于在Python的正则表达式中找到每个匹配的确切位置的文章就介绍到这了,更多相关Python找到匹配的确切位置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python NumPy教程之二元计算详解

    Python NumPy教程之二元计算详解

    二元运算符作用于位,进行逐位运算。二元运算只是组合两个值以创建新值的规则。本文将为大家详细讲讲Python NumPy中的二元计算,需要的可以了解一下
    2022-08-08
  • 详解如何将Pandas运行结果导出为CSV格式文件

    详解如何将Pandas运行结果导出为CSV格式文件

    在数据分析与处理的世界里,Pandas 是一个不可或缺的工具,它提供了强大的数据处理功能,让我们能够轻松地清洗、转换和分析数据,本文将带领大家了解如何使用 Pandas 将运行结果导出为 CSV 文件,并通过实际案例进行深入探讨
    2024-05-05
  • Python 列表去重去除空字符的例子

    Python 列表去重去除空字符的例子

    今天小编就为大家分享一篇Python 列表去重去除空字符的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • Python关于版本升级与包的维护方式

    Python关于版本升级与包的维护方式

    这篇文章主要介绍了Python关于版本升级与包的维护方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • Python实现统计单词出现的个数

    Python实现统计单词出现的个数

    这篇文章主要介绍了Python实现统计单词出现的个数,本文给出了实现代码以及使用方法,需要的朋友可以参考下
    2015-05-05
  • 详解python opencv、scikit-image和PIL图像处理库比较

    详解python opencv、scikit-image和PIL图像处理库比较

    这篇文章主要介绍了详解python opencv、scikit-image和PIL图像处理库比较,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • 详解Python中math和decimal模块的解析与实践

    详解Python中math和decimal模块的解析与实践

    在Python中,math 和 decimal 模块是处理数学运算的重要工具,本文将深入探讨这两个模块的基础知识,并通过实际的代码示例演示它们的用法,希望对大家有所帮助
    2024-02-02
  • python中的Json模块dumps、dump、loads、load函数用法详解

    python中的Json模块dumps、dump、loads、load函数用法详解

    这篇文章主要介绍了python中的Json模块dumps、dump、loads、load函数用法讲解,本文逐一介绍结合实例代码给大家讲解的非常详细,需要的朋友可以参考下
    2022-11-11
  • numpy中hstack vstack stack concatenate函数示例详解

    numpy中hstack vstack stack concatenate函数示例详解

    这篇文章主要为大家介绍了numpy中hstack vstack stack concatenate函数示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • Python实现的企业粉丝抽奖功能示例

    Python实现的企业粉丝抽奖功能示例

    这篇文章主要介绍了Python实现的企业粉丝抽奖功能,涉及Python数值运算与随机数生成相关操作技巧,需要的朋友可以参考下
    2019-07-07

最新评论