×

匹配

什么叫匹配?什么情况下,KMP算法的性能会退化为朴素匹配算法

admin admin 发表于2022-04-28 21:46:26 浏览138 评论0

抢沙发发表评论

什么叫匹配

匹配有以下几种可能的解释:匹配 (图论):寻找图中没有任何两条边拥有一个共同顶点的子图;字符串的模式匹配;阻抗匹配。

  • 中文名

  • 匹配

  • 外文名

  • Matching 

  • 拼    音

  • pǐ pèi

什么情况下,KMP算法的性能会退化为朴素匹配算法

(1)未改进的模式匹配算法的时间复杂度为O(nm),但在一般情况下,其实际的执行时间接近O(n+m),因此至今仍被采用。

(2)KMP算法仅当模式与主串之间存在许多“部分”匹配的情况下才显得比未改进的模式匹配快。

(2)KMP算法的最大特点是指示主串的指针不需要回溯,在整个匹配过程中,对主串仅需要从头至尾扫描一遍,这对处理存储在外存上的大文件是非常有效的。

扩展资料:

KMP算法是三位学者在 Brute-Force算法的基础上同时提出的模式匹配的改进算法。Brute- Force算法在模式串中有多个字符和主串中的若干个连续字符比较都相等,但最后一个字符比较不相等时,主串的比较位置需要回退。KMP算法在上述情况下,主串位置不需要回退,从而可以大大提高效率。-匹配

如果模式P与目标T(或其子串)存在某种程度的相似,则认为匹配成功。常用的衡量字符串相似度的方法是根据一个串转换成另一个串所需的基本操作数目来确定。基本操作由字符串的插入、删除和替换来组成。

参考资料来源:百度百科-kmp算法

Python正则表达式的几种匹配方法

1.测试正则表达式是否匹配字符串的全部或部分regex=ur““ #正则表达式if re.search(regex, subject):do_something()else:do_anotherthing()2.测试正则表达式是否匹配整个字符串regex=ur“/Z“ #正则表达式末尾以/Z结束if re.match(regex, subject):do_something()else:do_anotherthing()3.创建一个匹配对象,然后通过该对象获得匹配细节(Create an object with details about how the regex matches (part of) a string)regex=ur““ #正则表达式match = re.search(regex, subject)if match:# match start: match.start()# match end (exclusive): atch.end()# matched text: match.group()do_something()else:do_anotherthing() 4.获取正则表达式所匹配的子串(Get the part of a string matched by the regex)regex=ur““ #正则表达式match = re.search(regex, subject)if match:result = match.group()else:result = ““