當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。