当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python difflib.SequenceMatcher.find_longest_match用法及代码示例


用法:

find_longest_match(alo=0, ahi=None, blo=0, bhi=None)

a[alo:ahi]b[blo:bhi] 中查找最长的匹配块。

如果省略 isjunkNone ,则 find_longest_match() 返回 (i, j, k) 使得 a[i:i+k] 等于 b[j:j+k] ,其中 alo <= i <= i+k <= ahiblo <= j <= j+k <= bhi 。对于所有满足这些条件的(i', j', k'),附加条件k >= k'i <= i'以及如果i == i'j <= j'也满足。换句话说,在所有最大匹配块中,返回最早在 a 开始的块,并且在所有那些最早在 a 开始的最大匹配块中,返回最早在 b 开始的匹配块。

>>> s = SequenceMatcher(None, " abcd", "abcd abcd")
>>> s.find_longest_match(0, 5, 0, 9)
Match(a=0, b=4, size=5)

如果提供了isjunk,则首先如上所述确定最长匹配块,但附加限制是块中不出现垃圾元素。然后通过匹配(仅)两侧的垃圾元素来尽可能地扩展该块。因此,生成的块永远不会与垃圾匹配,除非相同的垃圾恰好与有趣的匹配相邻。

这是与之前相同的示例,但将空白视为垃圾。这可以防止' abcd' 直接匹配第二个序列尾部的' abcd'。相反,只有 'abcd' 可以匹配,并且匹配第二个序列中最左边的 'abcd'

>>> s = SequenceMatcher(lambda x: x==" ", " abcd", "abcd abcd")
>>> s.find_longest_match(0, 5, 0, 9)
Match(a=1, b=0, size=4)

如果没有匹配的块,则返回 (alo, blo, 0)

此方法返回一个命名元组 Match(a, b, size)

在 3.9 版中更改:添加了默认参数。

相关用法


注:本文由纯净天空筛选整理自python.org大神的英文原创作品 difflib.SequenceMatcher.find_longest_match。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。