多模式匹配方法、装置和设备制造方法及图纸

技术编号:7700418 阅读:170 留言:0更新日期:2012-08-23 05:48
本发明专利技术提供一种多模式匹配方法、装置和设备,上述多模式匹配方法包括:查询映射表,获得搜寻文本中的字符的映射值;将该字符的映射值输入精简的AC状态机,以确定搜寻文本包含的搜寻模式;精简的AC状态机中每个状态节点的下一个状态表的输入字符的范围包括通配字符和有效输入字符,通配字符用于表示无效输入字符;有效输入字符包括搜寻模式集合中的字符,无效输入字符包括ASCII码表中除有效输入字符之外的其他字符。本发明专利技术中精简的AC状态机将所有无效输入字符压缩为一个通配字符,从而可以实现减小AC状态机中每个状态节点的下一个状态表的内存消耗,进而可以缩小AC状态机的内存消耗,提高AC状态机的效率。

【技术实现步骤摘要】

本专利技术涉及模式匹配技木,尤其涉及一种多模式匹配方法、装置和设备
技术介绍
多模式匹配问题是计算机科学的基本问题之一,多模式匹配问题可以简单描述为一个搜寻文本和ー个搜寻模式集合,判断此搜寻文本包含搜寻模式集合中的多少个搜寻·模式。比如搜寻·文本A为abcdefgl23456,搜寻■模式集合C为{abc、ef、tian、123、67、890}。那么,进行多模式匹配后,输出的结果就是搜寻文本A中包含搜寻模式abc、ef和123。多模式匹配只要扫描一遍搜寻文本,就能够找出该搜寻文本匹配的所有搜寻模 式,具有很高的匹配效率,广泛用于入侵检测、病毒检测、搜索引擎和数据挖掘等领域。AC (Aho-Corasick)算法是ー种经典的多模式匹配算法,能够在任意的搜寻文本中定位任一个搜寻模式的所有位置。该算法利用有限自动机巧妙地将字符比较转化为状态转移。其原理是首先根据搜寻模式集合定义ー个有限状态模式匹配机,然后把搜寻文本作为模式匹配状态机的输入,只要匹配到搜寻模式,就会通报此搜寻模式成功。在标准的AC算法中,搜寻文本的每次输入是ー个字节。以搜寻■模式集合{he、she、his、hers}为例,由此搜寻■模式集合构建的AC状态机如图I所示,图Ia 图Ic为现有技术AC状态机的示意图。图Ia中,姆ー个圆圈表示ー个状态节点,每个状态节点都包含三个重要数据转移(goto)函数(图la)、失效(failure)函数(图Ib)、输出(output)函数(图Ic)。其中,goto函数用于把ー个由状态和输入字符组成的ニ元组映射成另ー个状态或是失败;failure函数用于把ー个状态映射到另ー个状态。当goto函数报告失效时,failure函数就会被询问;output函数,用于表示某个搜寻模式已经被匹配。在基本AC状态机的状态迁移中,在当前状态S和输入字符c下,下ー个状态为操作I :如果goto (S,c)存在,那么下ー个状态为goto (S,C),算法结束;否则,执行操作2 ;操作2 :将failure (S)赋值给S,执行操作I。由于在基本AC状态机中,如果goto函数的结果不存在,就会导致一次或是多次的访问failure函数,为了提高AC状态机的效率,现有技术提出ー种去failure的AC状态机。在去failure的AC状态机中,姆ー个状态节点没有failure函数,而是把goto函数和failure函数统一为下一个状态(nextstate)函数。去failure的AC状态机的示意图和标准AC状态机的示意图是ー样的,只是每个状态节点下,不再有goto函数和failure函数,而是用nextstate函数替代。nextstate函数,用于把ー个由状态和输入字符组成的ニ元组映射成另ー个状态。即通过nextstate函数,可获知ー个确定的下ー个状态。有了 nextstate函数后,AC状态机的迁移就简单多了,在当前状态S和当前输入字符c下,那么下ー个状态就是nextstate (S, c)。为了方便获取nextstate函数,每ー个状态节点需保存下一个状态表,每ー个状态节点的下一个状态表记录在当前状态下,在不同的输入字符时的下ー个状态值,即在当前状态下,输入某个字符,那么将迁移到哪ー个状态。由于字符是ー个字节,能够表示美国信息互换标准代石马(American S tandard Code for Information Interchange ;以下简称ASCII)码中的0 255。其中,ASCII码表记录的是用户所看到的字符与计算机内部的真正数值之间的映射,由于ー个字节的取值范围是O 255,因而ASCII码表有256个单元。比如用户看到的字母a,计算机内部的保存数值是97 ;用户看到的数字1,计算机内部的保存数值是31,等等。因而下ー个状态表是ー个具有256个成员的数组。以图Ia中的状态节点I为例,状态节点I在256个不同ASCII码值输入时的下一个状态表,可以如表I所示。表I本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种多模式匹配方法,其特征在于,包括 查询映射表,获得搜寻文本中的字符的映射值; 将所述字符的映射值输入精简的AC状态机,以确定所述搜寻文本包含的搜寻模式;所述精简的AC状态机根据所述映射表构建,所述精简的AC状态机中每个状态节点的下ー个状态表的输入字符的范围包括通配字符和有效输入字符,所述通配字符用于表示无效输入字符;所述有效输入字符包括搜寻模式集合中的字符,所述无效输入字符包括美国信息互换标准代码ASCII码表中除所述有效输入字符之外的其他字符;所述映射表包括所述有效输入字符和所述有效输入字符的映射值,以及所述无效输入字符和所述无效输入字符的映射值。2.根据权利要求I所述的方法,其特征在于,所述查询映射表,获得搜寻文本中的字符的映射值之前,还包括 对所述搜寻模式集合进行扫描,将所述搜寻模式集合中包含的字符划分为有效输入字符,将ASCII码表中除所述有效输入字符之外的其他字符划分为无效输入字符; 将所述有效输入字符映射为所述有效输入字符在由所述搜寻模式集合包含的字符组成的有效输入字符集合中的序号,并将所述无效输入字符映射为由所述搜寻模式集合包含的字符组成的有效输入字符集合的集合大小,以构建所述映射表; 根据所述映射表构建精简的AC状态机。3.根据权利要求2所述的方法,其特征在于,所述根据所述映射表构建精简的AC状态机包括 根据所述搜寻模式集合,构建标准的AC状态机; 将所述标准的AC状态机每个状态节点的下一个状态表中所述无效输入字符对应的表项压缩为所述通配字符对应的表项,按照所述映射表中所述有效输入字符和所述通配字符的映射值的顺序,调整所述每个状态节点的下一个状态表中所述有效输入字符和所述通配字符的顺序,使得所述每个状态节点的下一个状态表中所述有效输入字符和所述通配字符的顺序与所述映射表中所述有效输入字符和所述通配字符的映射值的顺序一致。4.根据权利要求1-3任意一项所述的方法,其特征在于,所述精简的AC状态机中每个状态节点的下一个状态表中所述通配字符对应表项的下一个状态为初始状态。5.一种多模式匹配装置,其特征在于...

【专利技术属性】
技术研发人员:陈国鹏
申请(专利权)人:北京星网锐捷网络技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1