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

张开发
2026/5/5 20:07:23 15 分钟阅读
怎么在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() 方法获取单个元组中的开始和结束索引。示例12345678#importing re functionsimportre#compiling [A-Z0-9] and storing it in a variable ppre.compile([A-Z0-9])#looping m times in p.finditerforminp.finditer(A5B6C7D8):#printing the m.start and m.groupprintm.start(), m.group()输出这给出了输出 -0 A1 52 B3 64 C5 76 D7 8代码说明使用 import re 导入 regex 模块。使用 re.compile() 函数创建一个 Regex 对象([A-Z0-9])并将其分配给变量 p。对 m 运行循环并将要搜索的字符串传递到 Regex 对象的 finditer() 方法中。这将返回一个 Match 对象。调用 Match 对象的 m.group() 和 m.start() 方法返回实际匹配文本的字符串。示例1234567# Python program to illustrate# Matching regex objects# with groupsimportrephoneNumRegexre.compile(r(\d\d\d)-(\d\d\d-\d\d\d\d))mophoneNumRegex.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() 方法返回实际匹配文本的字符串。

更多文章