【技术实现步骤摘要】
基于原语状态机的高速字符串特征匹配方法、装置及设备
[0001]本专利技术涉及基因测序和网络报文深度内容匹配
,尤其涉及一种基于原语状态机的高速字符串特征匹配方法、装置和设备。
技术介绍
[0002]如何在输入的字符序列中快速匹配指定的关键字特征集合是否出现以及出现的位置,是计算机科学领域的一个长期难点问题,在互联网高速报文分类、互联网应用协议识别、基因组比对定位等领域有广泛用途。
[0003]现有的典型匹配算法包括AC算法、DFA和NFA算法等。其中AC算法是Alfred V.Aho和Margaret J.Corasick专利技术的字符串搜索算法,用于在输入的一串字符串中匹配有限个字符串特征中的子串,存在效率低下的问题。而DFA和NFA算法通常是由正则表达式编译生成的,DFA算法不提供匹配回溯功能,NFA比DFA算法慢,但提供了匹配回溯功能。DFA和NFA算法在正则表达式数量较多时,存在着严重的状态组合爆炸问题,且匹配性能低于AC算法。同时,上述算法基本匹配过程均为:在输入字符序列中读取一个字符,根据当前算法 ...
【技术保护点】
【技术特征摘要】
1.一种基于原语状态机的高速字符串特征匹配方法,其特征在于,具体包括:用户输入关键字特征集合,并对每个关键字特征以特征序号和用于存储关键字的字符串序列方式存储所述关键字特征;基于预先定义的基本操作原语,对所述关键字特征集合,按照预设的关键字特征集合编译方法进行编译,获得关键字特征集合对应的原语状态机;获取待匹配目标字符串,基于所述原语状态机执行字符串匹配过程,获得命中关键字,并输出命中关键字的特征序号和当前匹配字符的结束位置。2.根据权利要求1所述的基于原语状态机的高速字符串特征匹配方法,其特征在于,所述基本操作原语包括:跳过字符原语:在当前输入字符读取位置,向前或向后跳过N个字符;在当前位置匹配多个字符串原语:在当前输入字符位置开始匹配多个字符串特征;搜索匹配多个字符串原语:从当前输入字符位置开始搜索匹配多个字符串特征;跳转到指定匹配位置原语:将当前读取位置指向输入字符串的指定位置;成功命中原语:匹配过程结束,返回匹配命中的关键字特征序号和命中的结束位置;失败原语:匹配过程结束,返回失败信息。3.根据权利要求1所述的基于原语状态机的高速字符串特征匹配方法,其特征在于,所述预设的关键字特征集合编译方法具体包括:创建成功命中原语节点、失败原语节点作为基础原语节点,并初始化相关变量,将失败指针指向失败原语节点,当前节点指针指向空节点;获取待编译关键字特征集合,读取当前字符并将读取指针后移,根据所述当前字符和/或下一个字符的类型进行语法分析,并按照预设的编译方法对不同字符或字符组合进行编译构造原语状态机;获得每个关键字对应的原语状态机;根据所述关键字对应的原语状态机根节点的深度,先合并深度相同的原语状态机,再按照从浅到深的原则进行聚合,获得关键字特征集合对应的原语状态机。4.根据权利要求3所述的基于原语状态机的高速字符串特征匹配方法,其特征在于,所述根据所述当前字符和/或下一个字符的类型进行语法分析,并按照预设的编译方法对不同字符或字符组合进行编译步骤具体包括:当前字符为“.”,读取下一个字符,当下一个字符为“*”,设置浮动标志并读取指针后移,否则建立跳过字符原语节点作为当前节点或将当前跳过字符原语的跳过数量加1;当前字符为“*”,停止编译并报错;对其它字符,进行“字符串”原语节点的处理过程,具体包括:当前字符为“\”,读取下一个字符,并将读取指针后移;当前节点不为“字符串”类型的原语节点,根据浮动标志是否为True,创建“搜索匹配多个字符串”原语节点或“当前位置匹配多个字符串”原语节点,并将当前节点的成功跳转状态指向新节点,失败跳转状态指向失败指针,最后更新当前节点为新创建的原语节点;将当前字符加入到当前原语的搜索字符串尾;如果浮动标志为True,且失败指针指向失败原语节点,创建跳转指定位置原语,将其成功和失败跳转状态指向当前节点,字符读取位置指定为前一状态的初始读取位置,并将失败指针指针指向新创建的跳转指定位置原语;
设置浮动标志为False。5.根据权利要求3所述的基于原语状态机的高速字符串特征匹配方法,其特征在于,所述根据所述关键字对应的原语状态机根节点的深度,先合并深度相同的原语状态机,再按照从浅到深的原则进行聚合,获得关键字特征集合对应的原语状态机步骤具体包括:创建按照深度排序的空链表,根据原语状态机深度规则确定各原语状态机的深度值;读取所述关键字对应的第一个原语状态机及其深度值,将所述第一个原语...
【专利技术属性】
技术研发人员:刘铮铮,周蓉蓉,姜武忠,莫晨宇,王瑞旋,陈妍红,
申请(专利权)人:中南大学湘雅医院,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。