用法:
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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。