字符串匹配方法和装置的制造方法

文档序号:9708289阅读:409来源:国知局
字符串匹配方法和装置的制造方法
【技术领域】
[0001] 本发明涉及计算机技术领域,尤其涉及字符串匹配方法和装置。
【背景技术】
[0002] 为了应对网络入侵,需要对端口接收到的字符串进行监控,即需要对接收到的字 符串按照特定的模式字符串进行分段匹配,为了使得字符串匹配更加高效,现有技术往往 在异构计算环境中使用没有回溯跳转的多模式字符串匹配算法进行字符串匹配,即首先由 CHJ建立状态自动机,该自动机不包括字符匹配失败后的跳转,并将该自动机发送到图形处 理器的全局内存中,以便图形处理器上的线程利用该自动机对接收到的待匹配字符串进行 匹配,由于采用了异构计算环境,则图形处理器上的多个线程同时对同一字符串的不同分 段进行匹配,为了防止漏匹配,每个分段之间都有重叠区域,该重叠区域的长度为模式字符 串长度的最大值。
[0003] 上述没有回溯跳转的多模式字符串匹配算法是将接收到的长度为η的待匹配字 符串分为η段,对于任意一个分段i (1 < i < η),该分段从待匹配字符串的第i个字符开始, 到第η个字符结束,当在字符串匹配的过程中遇到匹配失败的情况时,该匹配过程结束,即 在利用上述状态自动机进行字符串匹配的时候不进行状态回溯,当较少的模式字符串之间 的相似度较低的情况下,可能每个线程检测到一个或几个字符时即可以判断匹配失败,避 免了图形处理器对重叠区域进行检测时浪费的系统资源。
[0004] 在利用现有力学模型试验装置进行试验的过程中,发明人发现现有技术至少存在 如下问题:
[0005] 当模式字符串的数量较多的时候,每个模式字符串中相似段出现的概率更高,每 个线程需要检测更多的字符才可能判断为匹配失败,导致每个线程的执行时间会大幅增 加,从而导致在较多模式字符串的情况下,字符串匹配的效率低。

【发明内容】

[0006] 本发明的实施例提供一种字符串匹配方法和装置,通过将模式字符串进行分段匹 配,能够使得字符串匹配更加高效。
[0007] 本发明实施例的第一方面是提供字符串匹配方法,该方法包括:
[0008] 获取前缀状态自动机,所述前缀状态自动机是由模式字符串的前缀按照多模式字 符串匹配算法构成的状态自动机,所述模式字符串为字符串匹配时所用的特征字符串,所 述前缀由从所述模式字符串第一个字符开始逐个提取预设值个数的字符组合而成;
[0009] 获取待匹配字符串,根据所述前缀状态自动机对所述待匹配字符串进行字符串匹 配,以便所述字符串匹配成功后中央处理器利用所述模式字符串的后缀对所述待匹配字符 串进行第二次字符串匹配。
[0010] 结合第一方面,在第一种可能的实现方式中,所述获取状态自动机包括:
[0011] 从存储器中获取所述前缀状态自动机,所述前缀状态自动机按照稀疏矩阵的方式 存储在所述存储器内存中,所述稀疏矩阵中的行表示所述前缀状态自动机的各个状态,所 述稀疏矩阵每一列对应一个输入,所述稀疏矩阵中的列表示所述前缀状态自动机接收到每 一列对应的输入时状态跳转的下一跳状态,其中-1表示在该行所示的状态下有字符串被 成功匹配;
[0012] 在所述存储器中存储有匹配列表,所述匹配列表包括所述前缀状态自动机的每一 个状态以及与每一个状态对应的地址,若其中第一状态对应的地址不为空,则表示在该第 一状态下有所述模式字符串的前缀被成功匹配,该第一状态对应的地址为被成功匹配到的 所述模式字符串的前缀的存储地址。
[0013] 结合第一方面,在第二种可能的实现方式中,所述根据所述前缀状态自动机对所 述待匹配字符串进行字符串匹配包括:
[0014] 获取所述待匹配字符串,从所述待匹配字符串的首个字符开始,由至少一个线程 将所述待匹配字符串中的每个字符输入到所述前缀状态自动机中,当所使用的线程数量大 于1时,每两个线程输入的所述待匹配字符串中相同位置的字符数量等于所述预设值;
[0015] 当所述待匹配字符串中的每一个字符都在所述前缀状态自动机中完成匹配过程, 则生成匹配结果,并将所述匹配结果存储在存储器中。
[0016] 第二方面,提供一种字符串匹配方法,该方法包括:
[0017] 获取后缀状态自动机,所述后缀状态自动机是由模式字符串的后缀按照多模式字 符串匹配算法构成的状态自动机,且所述后缀状态自动机不包括状态回溯,所述模式字符 串为字符串匹配时所用的特征字符串,所述后缀的长度为所述模式字符串的长度与预设值 的差值;
[0018] 在图形处理器对所述待匹配字符串进行字符串匹配成功后,获取待匹配字符串, 根据所述后缀状态自动机对所述待匹配字符串进行字符串匹配。
[0019] 结合第二方面,在第一种可能的实现方式中,所述方法还包括:
[0020] 将所述模式字符串拆分为前缀和后缀,所述前缀由从所述模式字符串第一个字符 开始逐个提取所述预设值个数的字符组合而成,所述后缀为所述模式字符串减去所述前缀 后剩下的部分;
[0021] 将所述前缀按照多模式字符串匹配算法生成前缀状态自动机并存储于存储器中, 将所述后缀按照多模式字符串匹配算法生成后缀状态自动机,并去除所述后缀状态自动机 中的状态回溯。
[0022] 结合第二方面,在第二种可能的实现方式中,所述前缀状态自动机与所述后缀状 态自动机按照稀疏矩阵的方式存储在所述存储器中,所述稀疏矩阵中的行表示所述后缀状 态自动机的各个状态,所述稀疏矩阵每一列对应一个输入,所述稀疏矩阵中的列表示所述 后缀状态自动机接收到每一列对应的输入时状态跳转的下一跳状态,其中-1表示在该行 所示的状态下有字符串被成功匹配;
[0023] 在所述存储器中存储有匹配列表,所述匹配列表包括所述后缀状态自动机的每一 个状态以及与每一个状态对应的地址,若其中第一状态对应的地址不为空,则表示在该第 一状态下有所述模式字符串的后缀被成功匹配,该第一状态对应的地址为被成功匹配到的 所述模式字符串的后缀的存储地址。
[0024] 结合第二方面,在第三种可能的实现方式中,所述获取待匹配字符串,根据所述状 态自动机对所述待匹配字符串进行字符串匹配包括:
[0025] 获取所述待匹配字符串,从所述待匹配字符串的第一位置开始,由至少一个线程 将所述待匹配字符串中的所述第一位置以后的每个字符输入到所述后缀状态自动机中,所 述第一位置为所述前缀在所述待匹配字符串中被成功匹配到的位置,当所使用的线程数量 大于1时,每两个线程输入的所述待匹配字符串中相同位置的字符数量等于所有所述后缀 中长度的最大值。
[0026] 第三方面,提供一种字符串匹配装置,所述装置包括:
[0027] 自动机获取单元,用于获取前缀状态自动机,所述前缀状态自动机是由模式字符 串的前缀按照多模式字符串匹配算法构成的状态自动机,所述模式字符串为字符串匹配时 所用的特征字符串,所述前缀由从所述模式字符串第一个字符开始逐个提取预设值个数的 字符组合而成;
[0028] 匹配单元,用于从所述自动机获取单元获取所述前缀状态自动机,获取待匹配字 符串,根据所述前缀状态自动机对所述待匹配字符串进行字符串匹配,以便所述字符串匹 配成功后中央处理器利用所述模式字符串的后缀对所述待匹配字符串进行第二次字符串 匹配。
[0029] 结合第三方面,在第一种可能的实现方式中,所述自动机获取单元具体用于:
[0030] 从存储器中获取所述前缀状态自动机,所述前缀状态自动机按照稀疏矩阵的方式 存储在所述内存中,所述稀疏矩阵中的行表示所述前缀状态自动机的各个状态,所述稀疏 矩阵每一列对应一个输入,所述稀疏矩阵中的列表示所述前缀状态自动机接收到每一列对 应的输入时状态跳转的下一跳状态,其中-1表示在该行所示的状态下有字符串被成功匹 配;
[0031] 在所述存储器中存储有匹配列表,所述匹配列表包括所述状态自动机的每一个状 态以及与每一个状态对应的地址,若其中第一状态对应的地址不为空,贝 1J表不在该第一状 态下有所述模式字符串的前缀被成功匹配,该第一状态对应的地址为被成功匹配到的所述 模式字符串的前缀的存储地址。
[0032] 结合第三方面,在第二种可能的实现方式中,所述匹配单元具体用于:
[0033] 获取所述待匹配字符串,从所述待匹配字符串的首个字符开始,由至少一个线程 将所述待匹配字符串中的每个字符输入到所述状态自动机中,当所使用的线程数量大于1 时,每两个线程输入的所述待匹配字符串中相同位置的字符数量等于所述预设值;
[0034] 当所述待匹配字符串中的每一个字符都在所述前缀状态自动机中完成匹配过程, 则生成匹配结果,并将所述匹配结果存储在存储器中。
[0035] 第四方面,提供一种字符串匹配装置,所述装置包括:
[0036] 自动机获取单元,用于获取状态自动机,所述状态自动机是由模式字符串的后缀 按照多模式字符串匹配算法构成的状态自动机,且所述状态自动机不包括状态回溯,所述 模式字符串为字符串匹配时所用的特征字符串,所述后缀的长度为所述模式字符串的长度 与预设值的差值;
[0037] 匹配单元,用于从所述自动机获取单元获取所述后缀状态自动机,在图形处理器 对所述待匹配字符串进行字符串匹配成功后,获取待匹配字符串,根据所述后缀状态自动 机对所述待匹配字符串进行字符串匹配。
[0038] 结合第四方面,在第一种可能的实现方式中,所属装置还包括:
[0039] 拆分单元,用于将所述模式字符串拆分为前缀和后缀,所述前缀由从所述模式字 符串第一个字符开始逐个提取所述预设值个数的字符组合而成,
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1