CN101685502A - 模式匹配方法及装置 - Google Patents
模式匹配方法及装置 Download PDFInfo
- Publication number
- CN101685502A CN101685502A CN200810198726A CN200810198726A CN101685502A CN 101685502 A CN101685502 A CN 101685502A CN 200810198726 A CN200810198726 A CN 200810198726A CN 200810198726 A CN200810198726 A CN 200810198726A CN 101685502 A CN101685502 A CN 101685502A
- Authority
- CN
- China
- Prior art keywords
- subpattern
- matching
- pattern
- match
- mode
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Telephonic Communication Services (AREA)
Abstract
本发明实施例提供了一种模式匹配方法,进行所述模式匹配的模式集合中的各模式分别包括各自的第一子模式和第二子模式,对匹配对象进行所述模式匹配包括:基于多模式匹配算法,对匹配对象根据所述模式集合进行第一子模式的匹配;基于单模式匹配算法,对经过所述第一子模式匹配成功之后的匹配对象根据所述模式集合进行第二子模式的匹配,并输出匹配结果。相应的,本发明实施例还提供了一种模式匹配装置,实施本发明实施例的方法及装置,结合多模式匹配算法及单模式匹配算法,对匹配对象进行模式匹配,克服了现有技术采用多模式匹配算法进行模式匹配带来的模式匹配占用的存储空间大、匹配速度低的问题,实现了节省存储空间和提高模式匹配速度的目的。
Description
技术领域
本发明涉及模式识别领域,尤其涉及一种模式匹配方法及一种模式匹配装置。
背景技术
模式匹配的对象一般包括文本、图像等,对文本的模式匹配一般是指在文本数据中搜索预定义的关键字,它在信息检索、模式识别、拼写检查、语言翻译、数据压缩、搜索引擎、入侵检测、内容过滤、计算机病毒特征匹配以及基因序列比较等领域有着广泛的应用。
模式匹配一般通过模式匹配算法来实现,模式匹配算法按照匹配模式的数目可分为单模式匹配算法和多模式匹配算法,单模式匹配算法是一次只能在文本中对一个模式进行匹配的算法,多模式匹配算法是可以同时对多个模式进行匹配的算法。因为多模式匹配通过一次扫描就可以找到与其匹配的所有模式,因此,较之单模式算法,其应用范围相对广泛。
现有的多模式匹配算法,如由Aho&Corasick在1975年提出的多模式匹配算法(简称AC算法),实现了一种自动机,可以在线性的时间里用一组关键词去匹配一个输入文本,其模式匹配通过Goto(转移)函数、Failure(失效)函数、Output(输出)函数来实现。
请参见图1,是现有技术中由关键字集合{he,she,his,hers}生成的AC状态机的示意图,如图所示,所述AC状态机包括Goto函数11、Failure函数12及Output函数13。设U={0,1,2...}为状态集合,SP={he,she,his,hers}为关键字集合(或称为模式集合),Goto函数11是(U,SP)→U的映射,该Goto函数11会根据当前状态和一个输入的字符映射为另一个状态,如根据当前状态“0”和输入字符“h”就会映射到状态“1”;Failure函数12是用来指明当某个模式与文本匹配不成功时,应处理的下一状态,如当前状态为“5”时,输入一个字符r,Goto函数11处理失败,此时调用Failure函数12进行处理,即当状态为“5”时,其对应处理的下一状态为“2”,当跳转到状态“2”后,再调用Goto函数11继续进行处理;Output函数是在匹配过程中输出已经匹配的模式,如在状态“2”,其输出{he}。
在实现本发明的过程中,发明人发现现有技术中至少存在如下问题:
请一并参照图2,是现有技术中由关键字集合{he,she,his,hers}生成的Goto函数的数组表示图。
如图所示,所述Goto函数的数组表示图包括10个状态,每个状态上使用一个大小为256(1个字节的表示量)的数组,状态数越多,Goto函数占用的存储空间就越大。又因为所述Goto函数是AC状态机的一个重要组成部分,所以AC状态机占用的存储空间大小与Goto函数所占用的存储空间大小成正比。结合图1及图2进行说明,图2中的由关键字集合{he,she,his,hers}生成Goto函数的数组表示图与图1中的Goto函数11是对应的,所述关键字集合{he,she,his,hers}中各模式分别为“he”、“she”、“his”、“hers”,各模式对应的字节长度分别为:2个字节、3个字节、3个字节、4个字节。如,由模式长度为2个字节的模式“he”生成的Goto函数的状态数有2个,分别是状态“0”和状态“1”,所述生成的Goto函数占用的存储空间为2个字节;当模式的数量增加或长度增大时,如关键字集合{he,she,his,hers},其模式数量为4个,由该关键字集合生成Goto函数的状态数有10个,占用的存储空间为10个字节。可以看出,Goto函数中的状态数与模式的数量及模式的长度成正比,Goto函数占用的存储空间与Goto函数中的状态数成正比,当Goto函数占用的存储空间增大时,由Goto函数、Failure函数及Output函数所构建的AC状态机占用的存储空间也会增大。比如,计算机病毒特征码的数量有几万甚至几十万条,若采用所述特征码来构建AC状态机,那么所构建的状态机占用的存储空间就会非常巨大,在进行模式匹配时,其巨大的存储空间可能会影响到CPU的缓存命中率,进而导致匹配速度的降低。
发明内容
鉴于现有技术的不足,本发明实施例提供了一种模式匹配方法及一种模式匹配装置,可减少模式匹配所占用的存储空间并提高模式匹配的速度。
为了达到上述发明目的,本发明实施例提供了一种模式匹配方法,进行所述模式匹配的模式集合中的各模式分别包括各自的第一子模式和第二子模式,对匹配对象进行所述模式匹配包括:
基于多模式匹配算法,对匹配对象根据所述模式集合进行第一子模式的匹配;
基于单模式匹配算法,对经过所述第一子模式匹配成功之后的匹配对象根据所述模式集合进行第二子模式的匹配,并在第二子模式匹配成功后输出匹配结果。
相应的,本发明实施例还提供了一种模式匹配装置,包括:
存储模块,用于存储模式集合,所述模式集合中的各模式分别包括第一子模式和第二子模式;
多模式匹配模块,用于基于多模式匹配算法,对匹配对象根据所述模式集合进行第一子模式的匹配;
单模式匹配模块,用于基于单模式匹配算法,对经过所述第一子模式匹配成功之后的匹配对象根据所述模式集合进行第二子模式的匹配,并在第二子模式匹配成功后输出匹配结果。
实施本发明实施例,具有如下有益效果:
本发明实施例提供的模式匹配方法及装置,结合多模式匹配算法及单模式匹配算法,对匹配对象进行模式匹配,克服了现有技术采用多模式匹配算法进行模式匹配带来的模式匹配占用的存储空间大、匹配速度低的问题,实现了节省存储空间和提高模式匹配速度的目的。
附图说明
图1是现有技术中由关键字集合{he,she,his,hers}生成的AC状态机的示意图;
图2是现有技术中由关键字集合{he,she,his,hers}生成的Goto函数的数组表示图;
图3是本发明实施例提供的模式匹配方法的第一实施例的流程示意图;
图4是本发明实施例提供的模式匹配方法的第二实施例的流程示意图;
图5是本发明实施例提供的匹配模板生成方法的流程示意图;
图6是本发明实施例提供的模式匹配方法的第三实施例的流程示意图;
图7是本发明实施例提供的模式匹配装置的第一实施例的组成示意图;
图8是本发明实施例提供的模式匹配装置的第二实施例的组成示意图;
图9是本发明实施例提供的由模式集合{telephone,telepathy,tech,elephant}生成的匹配模板示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供的模式匹配方法及装置,结合多模式匹配算法及单模式匹配算法,对匹配对象进行模式匹配,以达到减少存储空间和提高模式匹配速度的目的。
本发明实施例的模式匹配对象包括文本、图像等,若进行匹配的匹配对象为文本时,相应的匹配的模式则为文本中的字符串;若进行匹配的匹配对象为图像时,相应的匹配的模式则为该图像的特征,如,在计算机应用中,图像可以通过二进制数来描述,若要对图像进行模式匹配,通过分析,可将图像中的部分图像转化为一段或者多段二进制数,并将所述一段或者多段二进制数作为模式,对用来描述待匹配图像的二进制数进行模式匹配,若匹配成功,输出匹配结果。为了描述的简便,在本发明的一些具体实施例中仅描述匹配对象为文本的情况。
参见图3,是本发明实施例提供的模式匹配方法的第一实施例的流程示意图,进行所述模式匹配的模式集合中的各模式分别包括各自的第一子模式和第二子模式,对匹配对象进行所述模式匹配包括:
步骤301、基于多模式匹配算法,对匹配对象根据所述模式集合进行第一子模式的匹配;所述第一子模式的数量可为一个或多个,如,计算机病毒特征码(即模式)的数量有几万甚至几十万条,则从所述特征码中获取的第一子模式也可为几万条甚至几十万条。此处,若所述第一子模式的数量为多个,则基于该多个第一子模式,对匹配对象进行匹配。所述匹配对象包括文本、图像等。当所述模式匹配为字符串匹配时,所述第一子模式则包括所述各模式中自首字符开始的一定长度的字节,所述一定长度的字节可为一个或多个字节,例如,模式集合中的一模式为“telephone”,倘若取模式中自首字符开始的前5个字节作为第一子模式,则获取的第一子模式为“telep”;若模式集合中的某个模式的长度小于5个字节,则取其实际长度的字节作为第一子模式。
步骤302、基于单模式匹配算法,对经过所述第一子模式匹配成功之后的匹配对象根据所述模式集合进行第二子模式的匹配,并在第二子模式匹配成功后输出匹配结果。所述第二子模式的数量可为一个或多个,此处,当所述第二子模式的数量为多个时,则基于该多个第二子模式,对匹配对象进行匹配。当所述模式匹配为字符串匹配时,该第二子模式包括相应各模式中自所述第一子模式之后的字节,还以模式“telephone”为例,若第一子模式为“telep”,则第二子模式为“hone”,以上举例为模式划分为两段子模式的情况,是优选的实施方式,当然,根据上述实施方式所延伸的实施方式,如将模式划分为三段或多段子模式的情况也在本发明的保护范围之内。
实施本发明实施例提供的模式匹配方法,结合多模式匹配算法及单模式匹配算法,对匹配对象进行模式匹配,能够达到减少存储空间和提高模式匹配速度的目的。
参见图4,是本发明实施例提供的模式匹配方法的第二实施例的流程示意图,进行所述模式匹配的模式集合中的各模式分别包括各自的第一子模式和第二子模式,本实施例中,对匹配对象进行所述模式匹配包括:
步骤401、基于多模式匹配算法,对匹配对象根据所述模式集合进行第一子模式的匹配;所述第一子模式的数量可为一个或多个,若所述模式匹配为字符串匹配,则所述第一子模式包括各模式中自首字符开始的一定长度的字节。
步骤402、判断对匹配对象根据所述模式集合进行所述第一子模式匹配是否匹配成功;此处,若判断结果为否,则结束。
步骤403、若判断结果为是,则查询是否存在与成功匹配的第一子模式相关联的模式信息,所述模式信息包括所述第一子模式指向第二子模式的信息;
步骤404、若查询结果为存在与成功匹配的第一子模式相关联的模式信息,则基于单模式匹配算法和查询到的所述模式信息,对经过所述第一子模式匹配成功之后的匹配对象根据所述模式集合进行第二子模式的匹配。此处,例如,匹配对象为“telephone124”,第一子模式为“telep”,第二子模式为“hone”,假设对所述匹配对象进行第一子模式匹配成功且存在与第一子模式“telep”相关联的模式信息,则从匹配对象中的“hone124”部分开始进行第二子模式的匹配。
此处,若查询结果为不存在与成功匹配的第一子模式相关联的模式信息,则执行步骤406,输出第一子模式的匹配结果。以模式集合中的某一模式“her”为例,若取模式中自首字符开始的前5个字节作为第一子模式,因所述模式“her”的长度为3个字节,小于5个字节,此时,就可以直接将“her”作为第一子模式,相应的,该模式“her”就不存在相关联的第二子模式。此种情况下,基于多模式匹配算法,对匹配对象进行第一子模式的匹配时,若对匹配对象匹配成功,则输出匹配结果,该匹配结果可为该第一子模式“her”的编号。
步骤405、判断对经过所述第一子模式匹配成功之后的匹配对象根据所述模式集合进行第二子模式匹配是否匹配成功;
步骤406、若第二子模式匹配成功,则输出整个模式的匹配结果。此处,例如,模式“telephone”,若该模式的第一子模式为“telep”,第二子模式为“hone”,当对经过第一子模式“telep”匹配成功之后的匹配对象进行第二子模式“hone”匹配且匹配成功,则可输出匹配结果,该匹配结果可为所述模式“telephone”的编号。
此处,若对匹配对象未匹配完毕,则对未匹配完毕的匹配对象部分进行模式匹配,例如,匹配对象为“telephone124”,第一子模式为“telep”,第二子模式为“hone”,假设对所述匹配对象进行第一子模式匹配和第二子模式匹配都匹配成功,经判断,匹配对象未匹配完毕,若未匹配完毕的匹配对象部分为“124”,此时,则对未匹配完毕的匹配对象“124”进行模式匹配,重复步骤401~406,直到匹配对象匹配完毕为止。
实施本发明实施例提供的模式匹配方法,基于多模式匹配算法,对匹配对象根据模式集合进行第一子模式的匹配;若匹配成功,并且存在与成功匹配的第一子模式相关联的模式信息,则根据单模式匹配算法和所述模式信息,对经过所述第一子模式匹配成功之后的匹配对象根据模式集合进行第二子模式的匹配,并在第二子模式匹配成功后输出匹配结果。采用本发明实施例的上述技术方案,节省了模式匹配时所占用的存储空间,提高了模式匹配速度。
参见图5,是本发明实施例提供的匹配模板生成方法的流程示意图,本实施例提供的匹配模板生成方法包括:
步骤501、根据预先设置的规则,获取模式集合中每个模式的第一子模式及第二子模式;此处,所述模式的数量可为一个或多个,相应的,获取的第一子模式及第二子模式的数量分别可为一个或多个。若模式匹配为字符串匹配,所述规则可为:取模式中自首字符开始的一定长度的字节作为第一子模式,取自所述一定长度的字节之后的字节作为第二子模式;当所述模式为两个以上时,则分别取各模式中自首字符开始的相同长度的字节作为各自的第一子模式,取所述各模式中自所述相同长度的字节之后的字节作为各自的第二子模式。例如,模式集合中的一模式为“telephone”,倘若取模式中自首字符开始的前5个字节作为第一子模式,则获取的第一子模式为“telep”,第二子模式为“hone”,当模式集合中的某个模式的长度小于5个字节时,则取其实际的长度的字节作为第一子模式。
步骤502a、根据第一子模式生成与多模式匹配算法相应的第一匹配模板库;此处,根据需要,可以以第一子模式中的一个或多个字节为单位生成与所述多模式匹配算法相应的第一匹配模板库,也可以以第一子模式中的一个或多个比特为单位生成与所述多模式匹配算法相应的第一匹配模板库。例如,根据第一子模式生成与AC算法相应的第一匹配模板库,即AC状态机,所述AC状态机包括:Goto(转移)函数、Failure(失效)函数、Output(输出)函数。所述Goto函数用于根据当前状态和一个输入的字符映射为另一个状态;Failure函数是用来指明当某个模式与文本匹配不成功时,应处理的下一状态;Output函数是用于在匹配过程中输出已经匹配的模式。
步骤502b、根据第二子模式生成与单模式匹配算法相应的第二匹配模板库;此处,如根据第二子模式生成与直接字符串比较算法相应的第二匹配模板库,该第二匹配模板库包括多个匹配模板,一个匹配模板可对应一个第二子模式,通过所述匹配模板,可对匹配对象进行第二子模式的匹配。
需要说明的是,所述步骤502a和步骤502b没有特定的先后顺序。
步骤503、建立每个模式中第一子模式与第二子模式之间的关联,并生成模式信息,所述模式信息包括该模式的第一子模式指向第二子模式的信息。
实施本发明实施例的方法,所述与多模式匹配算法相应的第一匹配模板库占用的存储空间大,所述与单模式匹配算法相应的第二匹配模板库占用的存储空间小,本实施例的方案与根据整个模式生成与多模式匹配算法相应的匹配模板库的方案相比,节省了存储空间,从而提高了模式匹配速度。
参见图6,是本发明实施例提供的模式匹配方法的第三实施例的流程示意图;
步骤601、获取模式集合中每个模式的第一子模式及第二子模式,此处,若模式匹配为字符串匹配,所述第一子模式包括每个模式中自首字符开始的一定长度的字节,所述第二子模式包括相应的模式中自所述一定长度的字节之后的字节,所述一定长度的字节可为一个或多个字节;
步骤602a、根据第一子模式生成与多模式匹配算法相应的第一匹配模板库;
步骤602b、根据第二子模式生成与单模式匹配算法相应的第二匹配模板库;
需要说明的是,所述步骤602a与步骤602b没有特定的先后顺序。
步骤603、建立每个模式中第一子模式与第二子模式之间的关联,并生成模式信息,所述模式信息包括该模式的第一子模式指向第二子模式的信息;
步骤604、基于所述多模式匹配算法,将匹配对象与所述第一匹配模板库中的匹配模板进行第一子模式的匹配;
步骤605、判断匹配对象与所述第一匹配模板库中的匹配模板进行第一子模式匹配是否匹配成功;此处,若判断结果为否,则结束;
步骤606、若判断结果为第一子模式匹配成功,则查询是否存在与成功匹配的第一子模式相关联的模式信息;此处,若查询结果为不存在与成功匹配的第一子模式相关联的模式信息,则执行步骤609,输出第一子模式的匹配结果。
步骤607、若查询结果为存在与成功匹配的第一子模式相关联的模式信息,则根据单模式匹配算法和查询到的所述模式信息,将经过所述第一匹配模板库中的匹配模板匹配成功之后的匹配对象与所述第二匹配模板库中的匹配模板进行第二子模式的匹配;
步骤608、判断匹配对象与所述第二匹配模板库中的匹配模板进行第二子模式匹配是否匹配成功;
步骤609、若第二子模式匹配成功,则输出整个模式的匹配结果;
此处,若对匹配对象未匹配完毕,则对未匹配完毕的匹配对象部分进行模式匹配,重复步骤604~609,直到匹配对象匹配完毕为止。
上述步骤601~603是匹配模板生成的方法流程,在进行模式匹配之前,可预先根据模式集合中的各模式生成相应的匹配模板,但不是每次进行模式匹配前都需要根据模式集合中的各模式生成相应的匹配模板,因此,在本发明实施例中,步骤601~603也可以省去。
实施本发明实施例提供的模式匹配方法,首先,根据第一子模式生成与多模式匹配算法相应的第一匹配模板库,根据第二子模式生成与单模式匹配算法相应的第二匹配模板库;然后,将匹配对象先后与所述第一匹配模板库中的匹配模板及所述第二匹配模板库中的匹配模板进行匹配,并在匹配成功后输出匹配结果。采用本发明实施例的上述技术方案,节省了模式匹配时所占用的存储空间,提高了模式匹配速度。
参见图7,是本发明实施例提供的模式匹配装置的第一实施例的组成示意图,如图所示,本实施例提供的模式匹配装置包括存储模块71、多模式匹配模块72及单模式匹配模块73,下面对各模块功能作详细说明。
存储模块71,用于存储模式集合,所述模式集合中的各模式分别包括第一子模式和第二子模式;若模式匹配为字符串匹配,所述第一子模式包括所述各模式中自首字符开始的一定长度的字节,所述第二子模式包括所述各模式中自所述一定长度的字节之后的字节,所述一定长度的字节可为一个或多个字节。
多模式匹配模块72,用于基于多模式匹配算法,对匹配对象根据所述模式集合进行第一子模式的匹配;所述第一子模式的数量可为一个或多个,此处,若所述第一子模式的数量为多个,则基于该多个第一子模式,对匹配对象进行匹配。所述模式匹配对象包括文本、图像等,当所述模式匹配为字符串匹配时,该第一子模式包括各模式中自首字符开始的一定长度的字节,所述一定长度的字节可为一个或多个字节。例如,模式集合中的一模式为“telephone”,倘若取模式中自首字符开始的前5个字节作为第一子模式,则获取的第一子模式为“telep”;若模式集合中的某个模式的长度小于5个字节,则取其实际长度的字节作为第一子模式。
单模式匹配模块73,用于基于单模式匹配算法,对经过所述多模式匹配模块72匹配成功之后的匹配对象根据所述模式集合进行第二子模式的匹配,并在第二子模式匹配成功后输出匹配结果。此处,所述匹配结果可为整个模式的匹配结果,所述整个模式包括第一子模式和第二子模式。当模式匹配为字符串匹配时,该第二子模式包括相应各模式中自所述第一子模式之后的字节,以模式“telephone”为例,若第一子模式为“telep”,则第二子模式为“hone”,在第二子模式“hone”匹配成功后输出的匹配结果可为整个模式“telephone”的编号。
实施本发明实施例提供的模式匹配装置,结合多模式匹配算法及单模式匹配算法,对匹配对象进行模式匹配,能够达到减少存储空间和提高模式匹配速度的目的。
参见图8,是本发明实施例提供的模式匹配装置的第二实施例的组成示意图,如图所示,本实施例提供的模式匹配装置包括存储模块71、获取模块74、第一生成模块75、第二生成模块76、模式信息生成模块77、模式信息存储模块78、多模式匹配模块72及单模式匹配模块73,下面对各模块功能以及相互关系作详细说明。
存储模块71,用于存储模式集合,所述模式集合中的各模式分别包括第一子模式和第二子模式;
获取模块74,用于获取所述模式集合中每个模式的第一子模式及第二子模式;需要说明的是,所述模式的数量可为一个或多个,相应的,获取的第一子模式及第二子模式的数量分别可为一个或多个。此处,可根据预先设置的规则,获取模式集合中每个模式的第一子模式及第二子模式;若模式匹配为字符串匹配,所述规则可为:取模式中自首字符开始的一定长度的字节作为第一子模式,取自所述一定长度的字节之后的字节作为第二子模式;当所述模式为两个以上时,则分别取各模式中自首字符开始的相同长度的字节作为各自的第一子模式,取所述各模式中自所述相同长度的字节之后的字节作为各自的第二子模式。例如,模式集合中的一模式为“telephone”,倘若取模式中自首字符开始的前5个字节作为第一子模式,则获取的第一子模式为“telep”,第二子模式为“hone”,当模式集合中的某个模式的长度小于5个字节时,则取其实际的长度的字节作为第一子模式。
第一生成模块75,用于根据第一子模式生成与所述多模式匹配算法相应的第一匹配模板库;此处,根据需要,可以以所述第一子模式中的一个或多个字节为单位生成与所述多模式匹配算法相应的第一匹配模板库,也可以以所述第一子模式中的一个或多个比特为单位生成与所述多模式匹配算法相应的第一匹配模板库。例如,根据第一子模式生成与AC算法相应的第一匹配模板库,即AC状态机,通过所述AC状态机可对匹配对象进行第一子模式的匹配。
第二生成模块76,用于根据第二子模式生成与所述单模式匹配算法相应的第二匹配模板库;此处,如根据第二子模式生成与直接字符串比较算法相应的第二匹配模板库,该第二匹配模板库包括多个匹配模板,一个匹配模板可对应一个第二子模式,通过所述匹配模板,可对匹配对象进行第二子模式的匹配。
模式信息生成模块77,用于建立每个模式中第一子模式与所述第二子模式之间的关联,并生成模式信息,所述模式信息包括该模式的第一子模式指向第二子模式的信息。
模式信息存储模块78,用于存储模式信息生成模块77生成的模式信息。
多模式匹配模块72,用于基于多模式匹配算法,将匹配对象与所述第一生成模块75生成的第一匹配模板库中的匹配模板进行第一子模式的匹配。
单模式匹配模块73,用于基于单模式匹配算法,将经过所述多模式匹配模块72匹配成功之后的匹配对象与所述第二生成模块76生成的第二匹配模板库中的匹配模板进行第二子模式的匹配,并在第二子模式匹配成功后输出匹配结果。
具体地,所述单模式匹配模块73包括:
查询单元731,用于当接收到所述多模式匹配模块72发送的匹配成功的消息后,查询是否存在与成功匹配的第一子模式相关联的模式信息;
匹配单元732,用于当所述查询单元731的查询结果为存在与成功匹配的第一子模式相关联的模式信息时,根据单模式匹配算法和查询到的所述模式信息,对经过所述多模式匹配模块72匹配成功之后的匹配对象与所述第二生成模块76生成的第二匹配模板库中的匹配模板进行匹配,并在所述匹配模板匹配成功后输出匹配结果。此处,所述匹配结果可为整个模式的匹配结果,所述整个模式包括第一子模式及第二子模式。
此处,若所述查询单元731查询结果为不存在与成功匹配的第一子模式相关联的模式信息,则输出第一子模式的匹配结果。以模式集合中的某一模式“her”为例,若取模式中自首字符开始的前5个字节作为第一子模式,因所述模式“her”的长度为3个字节,所述长度小于5个字节,此时,就可以直接将“her”作为第一子模式,相应的,该模式“her”就不存在相关联的第二子模式。此种情况下,在进行第一子模式的匹配时,若对匹配对象匹配成功,可直接输出匹配结果。
参见图9,是本发明实施例提供的由模式集合{telephone,telepathy,tech,elephant}生成的匹配模板示意图,如图所示,所述匹配模板示意图包括第一匹配模板库即AC状态机91及第二匹配模板库92。
下面以模式集合{telephone,telepathy,tech,elephant}为例,详细阐述匹配模板生成及模式匹配的过程。
此处,若取模式集合中各模式中自首字符开始的前5个字节作为第一子模式,取所述5个字节之后的字节作为第二子模式,则获取的第一子模式集合为{telep,tech,eleph},需要说明的是,模式“telephone”与模式“telepathy”的前5个字节相同,他们的第一子模式都为“telep”;模式“tech”的长度为4个字节,小于5个字节,则取其实际长度的字节“tech”作为第一子模式;“elephant”的第一子模式为“eleph”。根据本实施例的模式集合获取的第二子模式集合为{hone,athy,ant},此处,需要说明的是,所述模式集合{telephone,telepathy,tech,elephant}中的模式“tech”在本实施例中不存在第二子模式。
获取第一子模式集合{telep,tech,eleph}及第二子模式集合{hone,athy,ant}之后,可根据所述第一子模式集合中的子模式生成与所述多模式匹配算法相应的第一匹配模板库,例如,以第一子模式中的一个字节为单位,生成的与AC算法相应的第一匹配模板库为AC状态机91,所述AC状态机91包括Goto(转移)函数911、Failure(失效)函数912、Output(输出)函数913;根据第二子模式集合中的子模式可生成与直接字符串比较算法相应的第二匹配模板库92,该第二匹配模板库92可包括多个匹配模板,一个匹配模板可对应一个第二子模式,如匹配模板921对应第二子模式“hone”,匹配模板922对应第二子模式“athy”,匹配模板923对应第二子模式“ant”,通过所述匹配模板,可对匹配对象进行第二子模式的匹配。
建立所述第一子模式集合{telep,tech,eleph}中的各第一子模式与第二子模式集合{hone,athy,ant}中的各第二子模式之间的关联,并生成模式信息,具体为:建立第一子模式“telep”与所述第二子模式“hone”及“athy”的指针关联,生成由“telep”分别指向“hone”及“athy”的模式信息;建立“eleph”与“ant”的指针关联,生成由“eleph”指向“ant”的模式信息。
当输入匹配对象时,将所述匹配对象与所述AC状态机91进行第一子模式的匹配;然后,判断第一子模式匹配是否匹配成功,如:当AC状态机91中Goto函数911的状态跳转到“5”时,经判断对匹配对象进行第一子模式“telep”匹配成功;接着,查询是否存在与所述第一子模式“telep”相关联的模式信息,经查询存在“telep”分别指向“hone”及“athy”的模式信息,则根据单模式匹配算法和查询到的所述模式信息,将经过所述第一子模式“telep”匹配成功之后的匹配对象分别和第二匹配模板库92中的匹配模板921及922进行第二子模式“hone”及“athy”的匹配,若匹配成功,则输出匹配结果,所述匹配结果可以是模式“telephone”或“telepathy”的编号;若匹配不成功且匹配对象未匹配完毕,则继续对匹配对象中未进行匹配的文本片段进行第一子模式的匹配,如当前状态为“5”时,输入一个字符“t”,匹配失败,此时调用Failure函数912进行处理,即当状态为“5”时,其对应处理的下一状态为“11”,当跳转到状态“11”后,再调用Goto函数911继续进行处理。若以第一子模式“tech”为例,当状态跳转到“7”时,经查询,不存在与所述第一子模式“tech”相关联的模式信息,则不需要进行第二子模式的匹配,直接调用Output函数913输出第一子模式的匹配结果,该匹配结果可为“tech”的编号。
在进行所述模式匹配的过程中,查询匹配对象是否已匹配完毕;若查询结果为匹配对象未匹配完毕,则继续对匹配对象中未进行匹配的文本片段进行模式匹配,直到匹配对象匹配完毕为止。
实施本发明实施例,首先,根据第一子模式生成与所述多模式匹配算法相应的第一匹配模板库,根据第二子模式生成与所述单模式匹配算法相应的第二匹配模板库;然后,将匹配对象先后与所述第一匹配模板库中的匹配模板及所述第二匹配模板库中的匹配模板进行匹配,并在匹配成功后输出匹配结果。采用本发明实施例的上述技术方案,节省了模式匹配时所占用的存储空间,提高模式匹配速度。
本发明上述实施例所提到的多模式匹配算法不限于AC算法,还可以使用其他的多模式匹配算法如:Commentz-Walter算法、Wu-Manbers算法等;同样,本发明实施例所提到的单模式匹配算法也不限于直接字符串比较算法,还可以是BM(R.Boyert&J.Moore)、KMP(Kunth-Morris-Pratt)算法等。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
Claims (12)
1、一种模式匹配方法,其特征在于,进行所述模式匹配的模式集合中的各模式分别包括各自的第一子模式和第二子模式,对匹配对象进行所述模式匹配包括:
基于多模式匹配算法,对匹配对象根据所述模式集合进行第一子模式的匹配;
基于单模式匹配算法,对经过所述第一子模式匹配成功之后的匹配对象根据所述模式集合进行第二子模式的匹配,并在第二子模式匹配成功后输出匹配结果。
2、根据权利要求1所述的模式匹配方法,其特征在于,所述基于多模式匹配算法,对匹配对象根据所述模式集合进行第一子模式的匹配的步骤之前还包括:
获取所述模式集合中每个模式的第一子模式及第二子模式;
根据第一子模式生成与所述多模式匹配算法相应的第一匹配模板库;
根据第二子模式生成与所述单模式匹配算法相应的第二匹配模板库;
建立每个模式中第一子模式与第二子模式之间的关联,并生成模式信息,所述模式信息包括该模式的第一子模式指向第二子模式的信息。
3、根据权利要求2所述的模式匹配方法,其特征在于,所述基于多模式匹配算法,对匹配对象根据所述模式集合进行第一子模式的匹配具体包括:
基于多模式匹配算法,将所述匹配对象与所述第一匹配模板库中的匹配模板进行匹配。
4、根据权利要求2或3所述的模式匹配方法,其特征在于,所述基于单模式匹配算法,对经过所述第一子模式匹配成功之后的匹配对象根据所述模式集合进行第二子模式的匹配的步骤包括:
查询是否存在与成功匹配的第一子模式相关联的模式信息;
若查询结果为是,则根据单模式匹配算法和查询到的所述模式信息,将经过所述第一子模式匹配成功之后的匹配对象与所述第二匹配模板库中的匹配模板进行匹配。
5、根据权利要求1-3中任意一项所述的模式匹配方法,其特征在于:
所述模式匹配为字符串匹配,所述第一子模式包括所述各模式中自首字符开始的一定长度的字节,所述第二子模式包括所述各模式中自所述一定长度的字节之后的字节,所述一定长度的字节可为一个或多个字节。
6、根据权利要求5所述的模式匹配方法,其特征在于,所述进行所述模式匹配的模式集合中的各模式的第一子模式的长度相同。
7、根据权利要求1-3中任意一项所述的模式匹配方法,其特征在于:
所述多模式匹配算法为AC算法,所述单模式匹配算法为直接字符串比较算法。
8、一种模式匹配装置,包括:
存储模块,用于存储模式集合,所述模式集合中的各模式分别包括第一子模式和第二子模式;
多模式匹配模块,用于基于多模式匹配算法,对匹配对象根据所述模式集合进行第一子模式的匹配;
单模式匹配模块,用于基于单模式匹配算法,对经过所述第一子模式匹配成功之后的匹配对象根据所述模式集合进行第二子模式的匹配,并在第二子模式匹配成功后输出匹配结果。
9、根据权利要求8所述的模式匹配装置,其特征在于,所述模式匹配装置还包括:
获取模块,用于获取所述模式集合中每个模式的第一子模式及第二子模式;
第一生成模块,用于根据第一子模式生成与所述多模式匹配算法相应的第一匹配模板库;
第二生成模块,用于根据第二子模式生成与所述单模式匹配算法相应的第二匹配模板库;
模式信息生成模块,用于建立每个模式中第一子模式与第二子模式之间的关联,并生成模式信息,所述模式信息包括该模式的第一子模式指向第二子模式的信息;
模式信息存储模块,用于存储模式信息生成模块生成的模式信息。
10、根据权利要求9所述的模式匹配装置,其特征在于,所述多模式匹配模块基于多模式匹配算法,将所述匹配对象与所述第一生成模块生成的第一匹配模板库中的匹配模板进行匹配。
11、根据权利要求9或10所述的模式匹配装置,其特征在于,所述单模式匹配模块包括:
查询单元,用于当接收到所述多模式匹配模块发送的匹配成功的消息后,查询是否存在与成功匹配的第一子模式相关联的模式信息;
匹配单元,用于当所述查询单元的查询结果为是时,根据单模式匹配算法和查询到的所述模式信息,对经过所述多模式匹配模块匹配成功之后的匹配对象与所述第二生成模块生成的第二匹配模板库中的匹配模板进行匹配,并在所述匹配模板匹配成功后输出匹配结果。
12、根据权利要求8-10中任意一项所述的模式匹配装置,其特征在于:
所述模式匹配为字符串匹配,所述第一子模式包括所述各模式中自首字符开始的一定长度的字节,所述第二子模式包括所述各模式中自所述一定长度的字节之后的字节,所述一定长度的字节可为一个或多个字节。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810198726A CN101685502A (zh) | 2008-09-24 | 2008-09-24 | 模式匹配方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810198726A CN101685502A (zh) | 2008-09-24 | 2008-09-24 | 模式匹配方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101685502A true CN101685502A (zh) | 2010-03-31 |
Family
ID=42048656
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200810198726A Pending CN101685502A (zh) | 2008-09-24 | 2008-09-24 | 模式匹配方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101685502A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102646123A (zh) * | 2012-02-23 | 2012-08-22 | 北京星网锐捷网络技术有限公司 | 多模式匹配方法、装置和设备 |
CN103312703A (zh) * | 2013-05-31 | 2013-09-18 | 西南大学 | 基于模式识别的网络入侵检测方法及*** |
CN103369361A (zh) * | 2013-06-17 | 2013-10-23 | 深圳市深信服电子科技有限公司 | 图像数据回显的控制方法、服务器及终端 |
CN103559266A (zh) * | 2013-11-04 | 2014-02-05 | 中国科学院声学研究所 | 多模式匹配方法及装置 |
CN103559177A (zh) * | 2013-11-12 | 2014-02-05 | 金蝶软件(中国)有限公司 | 一种地名识别方法及装置 |
CN103593611A (zh) * | 2013-11-05 | 2014-02-19 | 安一恒通(北京)科技有限公司 | 一种快速识别病毒的方法和装置 |
CN104899264A (zh) * | 2015-05-21 | 2015-09-09 | 东软集团股份有限公司 | 一种多模式正则表达式匹配方法及装置 |
CN105024987A (zh) * | 2014-04-30 | 2015-11-04 | ***通信集团设计院有限公司 | 一种web业务日志的监测方法和装置 |
CN106062740A (zh) * | 2014-01-13 | 2016-10-26 | 华为技术有限公司 | 生成多个索引数据字段的方法和装置 |
-
2008
- 2008-09-24 CN CN200810198726A patent/CN101685502A/zh active Pending
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102646123A (zh) * | 2012-02-23 | 2012-08-22 | 北京星网锐捷网络技术有限公司 | 多模式匹配方法、装置和设备 |
CN103312703A (zh) * | 2013-05-31 | 2013-09-18 | 西南大学 | 基于模式识别的网络入侵检测方法及*** |
CN103312703B (zh) * | 2013-05-31 | 2017-03-15 | 西南大学 | 基于模式识别的网络入侵检测方法及*** |
CN103369361A (zh) * | 2013-06-17 | 2013-10-23 | 深圳市深信服电子科技有限公司 | 图像数据回显的控制方法、服务器及终端 |
CN103369361B (zh) * | 2013-06-17 | 2016-08-10 | 深圳市深信服电子科技有限公司 | 图像数据回显的控制方法、服务器及终端 |
CN103559266A (zh) * | 2013-11-04 | 2014-02-05 | 中国科学院声学研究所 | 多模式匹配方法及装置 |
CN103559266B (zh) * | 2013-11-04 | 2017-03-22 | 中国科学院声学研究所 | 多模式匹配方法及装置 |
CN103593611A (zh) * | 2013-11-05 | 2014-02-19 | 安一恒通(北京)科技有限公司 | 一种快速识别病毒的方法和装置 |
CN103559177A (zh) * | 2013-11-12 | 2014-02-05 | 金蝶软件(中国)有限公司 | 一种地名识别方法及装置 |
CN106062740A (zh) * | 2014-01-13 | 2016-10-26 | 华为技术有限公司 | 生成多个索引数据字段的方法和装置 |
CN106062740B (zh) * | 2014-01-13 | 2020-03-31 | 华为技术有限公司 | 生成多个索引数据字段的方法和装置 |
CN105024987A (zh) * | 2014-04-30 | 2015-11-04 | ***通信集团设计院有限公司 | 一种web业务日志的监测方法和装置 |
CN105024987B (zh) * | 2014-04-30 | 2018-05-22 | ***通信集团设计院有限公司 | 一种web业务日志的监测方法和装置 |
CN104899264A (zh) * | 2015-05-21 | 2015-09-09 | 东软集团股份有限公司 | 一种多模式正则表达式匹配方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101685502A (zh) | 模式匹配方法及装置 | |
CN109960726B (zh) | 文本分类模型构建方法、装置、终端及存储介质 | |
CN101398820B (zh) | 一种大规模关键词匹配方法 | |
CN104899322A (zh) | 搜索引擎及其实现方法 | |
CN102148805B (zh) | 特征匹配方法和装置 | |
CN111352907A (zh) | 流水文件解析方法、装置、计算机设备和存储介质 | |
CN104699737A (zh) | 用于管理搜索的方法和*** | |
CN101729520A (zh) | 敏感信息的检测方法及装置 | |
CN111460090A (zh) | 基于向量的文档检索方法、装置、计算机设备及存储介质 | |
CN104115145A (zh) | 生成表示满足搜索准则的对象中的内容实例的标签的显示组的可视化 | |
CN101369278B (zh) | 一种近似匹配方法和装置 | |
CN112115232A (zh) | 一种数据纠错方法、装置及服务器 | |
CN104142990A (zh) | 搜索方法及装置 | |
CN112668320A (zh) | 基于词嵌入的模型训练方法、装置、电子设备及存储介质 | |
CN105045808A (zh) | 一种复合规则集匹配方法和*** | |
CN102867049A (zh) | 一种基于单词查找树实现的汉语拼音快速分词方法 | |
CN112651236A (zh) | 提取文本信息的方法、装置、计算机设备和存储介质 | |
CN104281275A (zh) | 一种英文的输入方法和装置 | |
CN111190873A (zh) | 一种用于云原生***日志训练的日志模式提取方法及*** | |
CN101377816B (zh) | 匹配规则包含位移指示符的并行多模式匹配的方法及*** | |
US20140129543A1 (en) | Search service including indexing text containing numbers in part using one or more number index structures | |
US20100191693A1 (en) | Segmenting Sequential Data with a Finite State Machine | |
Zhang et al. | Effective and Fast Near Duplicate Detection via Signature‐Based Compression Metrics | |
CN115048913B (zh) | 一种命令处理方法、装置和电子设备 | |
CN102521357A (zh) | 一种利用自动机实现文本精确匹配的***和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20100331 |
|
RJ01 | Rejection of invention patent application after publication |