python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python找到匹配的确切位置

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

作者:qq_25153359

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

简介

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

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

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

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

使用的语法

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

算法

示例

#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找到匹配的确切位置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文