怎么在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()
  • 使用 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'(ddd)-(ddd-dddd)’) mo = phoneNumRegex.search(‘My number is 415-555-4242.’) print(mo.groups())
  • 这给出了输出 – ('415', '555-4242')
  • 使用 import re 导入 regex 模块。使用 re.compile() 函数创建一个 Regex 对象 (r'(ddd)-(ddd-dddd)'),并将其赋值给变量 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 查找字符在字符串中的位置实例 Python 实现字符串中指定位置插入一个字符 python 巧用正则寻找字符串中的特定字符的位置方法 python读取txt文件中特定位置字符的方法 python实现从字符串中找出字符1的位置以及个数的方法 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'(ddd)-(ddd-dddd)')
              mo = phoneNumRegex.search('My number is 415-555-4242.')
              print(mo.groups())

              这给出了输出 –

              ('415', '555-4242')

              使用 import re 导入 regex 模块。使用 re.compile() 函数创建一个 Regex 对象 (r'(ddd)-(ddd-dddd)'),并将其赋值给变量 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 查找字符在字符串中的位置实例
              • Python 实现字符串中指定位置插入一个字符
              • python 巧用正则寻找字符串中的特定字符的位置方法
              • python读取txt文件中特定位置字符的方法
              • python实现从字符串中找出字符1的位置以及个数的方法
              • python在指定位置插入字符的实现
              • Python中查找字符串之间差异位置

              站内搜索