用法:
find_longest_match(alo=0, ahi=None, blo=0, bhi=None)
在
a[alo:ahi]
和b[blo:bhi]
中查找最長的匹配塊。如果省略
isjunk
或None
,則find_longest_match()
返回(i, j, k)
使得a[i:i+k]
等於b[j:j+k]
,其中alo <= i <= i+k <= ahi
和blo <= 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 difflib.SequenceMatcher.get_opcodes用法及代碼示例
- Python difflib.SequenceMatcher.get_matching_blocks用法及代碼示例
- Python difflib.unified_diff用法及代碼示例
- Python difflib.restore用法及代碼示例
- Python difflib.get_close_matches用法及代碼示例
- Python difflib.ndiff用法及代碼示例
- Python difflib.context_diff用法及代碼示例
- Python distributed.protocol.serialize.register_generic用法及代碼示例
- Python dict()用法及代碼示例
- Python distributed.Client.gather用法及代碼示例
- Python distributed.recreate_tasks.ReplayTaskClient.recreate_task_locally用法及代碼示例
- Python distributed.diagnostics.plugin.SchedulerPlugin用法及代碼示例
- Python distributed.Client.ncores用法及代碼示例
- Python distributed.Client.retire_workers用法及代碼示例
- Python distributed.Client.unregister_worker_plugin用法及代碼示例
- Python dictionary update()用法及代碼示例
- Python distributed.fire_and_forget用法及代碼示例
- Python dir用法及代碼示例
- Python distributed.Client.set_metadata用法及代碼示例
- Python distributed.Client.scheduler_info用法及代碼示例
注:本文由純淨天空篩選整理自python.org大神的英文原創作品 difflib.SequenceMatcher.find_longest_match。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。