一种基于非确定有限自动机的字符串搜索方法及其装置制造方法及图纸

技术编号:11677595 阅读:50 留言:0更新日期:2015-07-06 04:25
本发明专利技术公开一种基于非确定有限自动机的字符串搜索方法,包括构造非确定有限自动机并为非确定有限自动机设定状态变量;在所述非确定有限自动机中载入匹配表达式,并按照有向图运算符转换规则,将所述非确定有限自动机中的匹配表达式转换为有向图;根据所述状态变量中的状态位置,对进入所述非确定有限自动机的字符串中的字符开始匹配;若所述字符匹配成功则根据所述有向图中该位置所指向的最终位置更新所述状态变量,从所述更新的状态变量中的位置开始对下一字符进行匹配,直到获得符合所述匹配表达式的字符串或有字符匹配失败则匹配完成;当所述匹配完成时,并将所述状态变量置为开始位置。通过本发明专利技术可实现更加准确的字符串搜索,本发明专利技术还提供一种基于非确定有限自动机的字符串搜索装置。

【技术实现步骤摘要】

本专利技术数据搜索领域,具体地涉及一种基于非确定有限自动机的字符串搜索技 术。
技术介绍
在于网元进行交互的过程中,程序需要根据网元报文中的一些特定标识(即特定 的字符串)确定自身行为。由于网络传输的随机性,这些字符串可能以多种方式被接收,这 就需要能够在网络传输层面上屏蔽接收方式的多样性,获得这些特定字符串,发送给上层 业务逻辑。 传统基于缓存的字符串搜索,是以一个固定长度的字符串数组作为接受缓存,在 该接收缓存中搜索是否存在特定的字符串,若存在则匹配成功,若不存在则将一个时间段 内新接受的报文加入接受缓存重新进行匹配,若新报文的长度超过了预设值,则从头部开 始截去超出部分进行匹配。这样做的明显不足在于:一、特定字符串中有字符位于超出部分 被截去,而本次匹配不成功,从截后的报文头部继续进行匹配,而截后的报文头部并不包含 完整的字符串,因此造成不能搜索到匹配的字符串。二、特定字符串位于报文的尾部,需要 进行多次搜索匹配才能够匹配到目标字符串,效率很低。 NFA (基于非确定有限自动机)字符串搜索的核心思想是用字符串中的字符依次作 为自动机的输入,驱动自动机进行状态转换,如果自动机达到了最终状态,表示匹配成功, 如果自动机在字符串输入过程中进入"无法转移"状态,表示匹配失败。因此NFA判断是否 发现目标取决于新接收的报文内容和NFA的状态,因此和准确效率比传统算法要好。 但是,由于网络环境中报文是分段到达,不可能一次提供,如果目标字符串的一部 分到达,经过NFA没有匹配成功,经过一段时间后,目标字符串的另一部分到达,这时NFA 会重新对报文进行匹配,造成字符串匹配失败,无法获得目标字符串。 综上所述,一种简便高效准确的通过NFA搜索字符串的方法亟待出现。
技术实现思路
本专利技术提供了一种基于非确定有限自动机的字符串搜索方法,其特征在于,所述 方法包括: 构造非确定有限自动机并为非确定有限自动机设定状态变量; 在所述非确定有限自动机中载入匹配表达式,并按照有向图运算符转换规则,将 所述非确定有限自动机中的匹配表达式转换为有向图; 根据所述状态变量中的状态位置,对进入所述非确定有限自动机的字符串中的字 符开始匹配; 若所述字符匹配成功则根据所述有向图中该位置所指向的最终位置更新所述状 态变量,从所述更新的状态变量中的位置开始对下一字符进行匹配,直到获得符合所述匹 配表达式的字符串或有字符匹配失败则匹配完成; 当所述匹配完成时,并将所述状态变量置为开始位置。 优选的,所述在非确定有限自动机中载入匹配表达式的方法具体为: 以数组构造所述非确定有限自动机,将所述匹配表达式中的每个字符依次载入所 述数组中的每个位置。 详细的,所述根据所述状态变量中的状态位置,对进入所述非确定有限自动机的 字符串中的字符开始匹配的方法具体为: 确定非确定有限自动机中与所述状态变量中的状态位置相应的位置为字符匹配 起始的位置,若所述状态变量为开始位置,则从所述非确定有限自动机中的第一个位置开 始匹配; 在所述确定匹配起始的位置载入所述字符,与该位置存储的匹配表达式中的字符 进行匹配。 详细的,所述并根据所述有向图中该位置所指向的最终位置更新所述状态变量的 方法为: 根据所述有向图中该位置所指向的位置进行转换,到达下次匹配转换位置时,将 所述到达的匹配转换位置记为最终位置更新所述状态变量; 所述有向图中通过匹配普通字符而完成的状态转换为匹配转换; 所述有向图中通过元字符完成的转换为空转换。 详细的,所述按照有向图运算符转换规则,将所述非确定有限自动机中的匹配表 达式转换为有向图的方法为: 将所述匹配表达式中的字符依次作为有向图中的各节点; 将所述匹配表达式根据所述有向图运算符转换规则确定所述有向图中各节点的 转换关系。 详细的,所述有向图运算符转换规则具体为: 所述匹配表达式中的"("和")"元字符为指向下一个节点的空转换; 所述匹配表达式中的元字符为指向上一个节点的循环并指向下一个节点的空 转换; 所述匹配表达式中的" | "元字符为跳跃的指向")"的空转换,"("节点跳跃的指 向"I"后的下一个节点; 所述匹配表达式中的普通字符为指向下一个节点的匹配转换。 详细的,确定所述获得符合所述匹配表达式的字符串的方法为: 当所述匹配进入所述有向图中最后一个状态位置时,获得符合所述匹配表达式的 字符串。 本专利技术还公开一种基于非确定有限自动机的字符串搜索装置,所述装置包括: 自动机单元,用于构造并存储非确定有限自动机并为非确定有限自动机设定状态 变量,根据所述状态变量中的状态位置,对进入所述非确定有限自动机的字符串中的字符 开始匹配;若所述字符匹配成功根据所述有向图中该位置所指向的最终位置更新所述状态 变量,从所述更新的状态变量中的位置开始对下一字符进行匹配,直到获得符合所述匹配 表达式的字符串或有字符匹配失败则匹配完成; 表达式载入单元,用于向所述自动机单元构造的非确定有限自动机载入匹配表达 式; 匹配结果输出单元,用于输出所述自动机单元的匹配结果。 具体的,所述自动机单元进一步包括: 自动机创建存储模块,用于以数组构造非确定有限自动机,保存所述数据载入转 换单元载入数组的匹配表达式; 有向图转化模块,用于按照有向图运算符转换规则将所述自动机创建存储模块 构造的非确定有限自动机中的匹配表达式转化为有向图; 状态变量存储模块,用于存储所述非确定有限自动机的状态变量,所述状态变量 记载字符串匹配的状态位置; 匹配模块,用于根据所述状态变量存储模块中状态变量记载的状态位置,对进入 所述自动机创建存储模块的字符串中的字符开始匹配;若所述字符匹配成功则根据所述有 向图转换模块转化的有向图中该位置所指向的最终位置更新所述状态变量存储模块中的 状态变量,从所述更新的状态变量中的位置开始对下一字符进行匹配,直到获得符合所述 匹配表达式的字符串或有字符匹配失败则匹配完成。 具体的,所述匹配模块进一步包括: 匹配起点确定模块,用于根据所述状态变量存储模块中状态变量记载的状态位 置,确定匹配的起点位置; 若所述状态变量存储模块中的状态变量为开始位置,则从所述自动机创建存储模 块中非确定有限自动机数组的第一个位置开始匹配,若所述状态变量不为开始位置,则在 非确定有限自动机数组中按照所述位置变量记载的状态位置开始匹配; 字符匹配模块,用于根据匹配起点确定模块确定的起点位置,对进入所述自动机 创建存储模块的字符串中的字符进行匹配;若所述字符匹配成功则根据所述有向图转换模 块转化的有向图中该位置所指向的最终位置更新所述状态变量存储模块中的状态变量,从 所述更新的状态变量中的位置开始对下一字符进行匹配,直到获得符合所述匹配表达式的 字符串或有字符匹配失败则匹配完成; 状态变量置始模块,用于当字符匹配模块匹配完成时,将所述状态变量存储模块 中的状态变量置为开始位置。 本专利技术通过对NFA设定状态变量,记载NFA的搜索状态,若此变量为开始位置,执 行标准的NFA算法,NFA中的第一个位置开始进行字符串匹配,若状态变量不为开始位置, 当开始搜索时,从变量中记载的状态位置开始进行NFA搜索,当目标字符串一部分到达,经 过NFA匹配时记录匹配的状态位置,在经过一本文档来自技高网
...

【技术保护点】
一种基于非确定有限自动机的字符串搜索方法,其特征在于,所述方法包括:构造非确定有限自动机并为非确定有限自动机设定状态变量;在所述非确定有限自动机中载入匹配表达式,并按照有向图运算符转换规则,将所述非确定有限自动机中的匹配表达式转换为有向图;根据所述状态变量中的状态位置,对进入所述非确定有限自动机的字符串中的字符开始匹配;若所述字符匹配成功则根据所述有向图中该位置所指向的最终位置更新所述状态变量,从所述更新的状态变量中的位置开始对下一字符进行匹配,直到获得符合所述匹配表达式的字符串或有字符匹配失败则匹配完成;当所述匹配完成时,并将所述状态变量置为开始位置。

【技术特征摘要】

【专利技术属性】
技术研发人员:李超
申请(专利权)人:亿阳信通股份有限公司
类型:发明
国别省市:黑龙江;23

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

1