[发明专利]一种多模式字符串匹配方法和装置有效
申请号: | 201210132834.9 | 申请日: | 2012-04-28 |
公开(公告)号: | CN103377259A | 公开(公告)日: | 2013-10-30 |
发明(设计)人: | 王延维;徐广鑫;刘鹏 | 申请(专利权)人: | 北京新媒传信科技有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京市隆安律师事务所 11323 | 代理人: | 权鲜枝 |
地址: | 100089 北京市海淀区万*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 模式 字符串 匹配 方法 装置 | ||
技术领域
本发明涉及计算机技术领域,特别涉及一种多模式字符串匹配方法和装置。
背景技术
在计算机领域,字符串匹配是比较常见的话题,比如在搜索操作、敏感词过滤等应用中,都会涉及到字符串匹配的问题。一个好的字符串匹配的方式,能够帮助应用减少CPU占用时间,提高应用的响应时间。
多模式字符串匹配就是匹配的模式串不止一个,多模式串的匹配方法为:有n个模式串P1、P2、...、Pn和一个文本主串T,在T中寻找n个模式串中的任一个是否在T中出现,是则匹配成功。
对于多模式串的匹配,现有方案的思路是按照单模式串进行匹配,然后遍历所有的模式串,直到匹配完成,即分别用各模式串与主串相匹配,判断是否有匹配成功的。假设单模式串的时间复杂度为O(m),模式串的个数为n,那么现有方案的多模式串匹配的时间复杂度则为nO(m)。由此可见,该类算法的时间复杂度会随着模式串个数的增加而线性增长,即使单模式的时间复杂度很低,但是当模式串的数量达到一定的量级后,该算法的CPU时间开销将十分可观。
发明内容
本发明提供了一种多模式字符串匹配方法和装置,本发明的技术方案能够实现多模式字符串的精确匹配,同时该算法能大量降低CPU的时间开销,提高应用的响应速度。
为达到上述目的,本发明的技术方案是这样实现的:
本发明公开了一种多模式字符串匹配方法,该方法包括:
将多个模式串,按其各自的字符组成顺序,沿树结构的根节点向下,将每个字符写入一个节点中,生成一个决策树结构;
将待匹配的主串沿所述决策树向下进行匹配。
生成的所述决策树结构中,除了根节点外,其余的所有节点都写入有字符;
生成的所述决策树结构中,起始的一个或多个字符相同的两个模式串的该相同字符对应写入同一节点。
所述决策树中的每条路径对应一个或者多个模式串;
所述决策树结构中的除根节点以外的每个节点还均包括:该节点对应的终止标志符;
所述将多个模式串,按其各自的字符组成顺序,沿树结构的根节点向下,将每个字符写入一个节点中还包括:如果一个模式串的最后一个字符对应的节点为非叶子节点,则设置其终止标志符有效,以标记该模式串的结束。
所述将待匹配的主串沿所述决策树向下进行匹配包括:
将待匹配的主串按字符顺序沿所述决策树逐节点向下匹配,如果当前字符与当前节点写入的字符不一致,则结束流程;如果匹配到叶子节点或者匹配到终止标志符有效的非叶子节点,则匹配成功,将该路径上的从起始到该匹配到的叶子节点或者终止标志符有效的非叶子节点为止的字符作为匹配到的字符串输出。
所述将待匹配的主串沿所述决策树向下进行匹配包括:
将待匹配的主串按字符顺序沿所述决策树逐节点向下匹配时,每匹配到终止标志符有效的非叶子节点,则将该路径上的从起始到该终止标志符有效的非叶子节点为止的字符作为匹配到的字符串输出,并继续向下匹配,如果一直匹配到叶子节点,则将该整条路径上的字符作为匹配到的字符串输出。
或者,该方法在生成决策树结构之前,进一步包括:在所述的多个模式串中,如果一个N字符的模式串与另一个模式串的首N个字符重合时,只保留前者,N为自然数;
所述生成决策树结构包括:
将保留下来的多个模式串,按其各自的字符组成顺序,沿树结构的根节点向下,将每个字符写入一个节点中,生成一个决策树结构;
所述决策树中的每条路径仅对应一个模式串。
所述将待匹配的主串沿所述决策树向下进行匹配包括:将待匹配的主串按字符顺序沿所述决策树逐节点向下匹配,如果当前字符与当前节点写入的字符不一致,则结束流程;如果匹配到叶子节点则匹配成功。
所述决策树结构中,非叶子节点还包括其各子节点对应的哈希值;
所述将待匹配的主串按字符沿所述决策树逐节点向下匹配的过程中,判断当前节点的子节点集合中是否包含与主串的当前字符匹配的子节点包括:计算主串当前字符的哈希值;将所述计算出的哈希值与各子节点对应的哈希值进行匹配,如果存在与主串当前字符的哈希值相匹配的哈希值,则确定当前节点的子节点集合中包含与主串的当前字符匹配的子节点,反之,则确定不包含。
本发明还公开了一种多模式字符串匹配装置,该装置包括:创建模块,保存模块和匹配模块;
创建模块,用于将多个模式串,按其各自的字符组成顺序,沿树结构的根节点向下,将每个字符写入一个节点中,生成一个决策树结构,并将所述决策树结构保存到存储模块中;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京新媒传信科技有限公司,未经北京新媒传信科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210132834.9/2.html,转载请声明来源钻瓜专利网。
- 上一篇:电梯轿厢隐藏式踢脚结构
- 下一篇:消息整合装置、消息整合方法以及电子设备