CN105468588A - 字符串匹配方法和装置 - Google Patents
字符串匹配方法和装置 Download PDFInfo
- Publication number
- CN105468588A CN105468588A CN201410240320.4A CN201410240320A CN105468588A CN 105468588 A CN105468588 A CN 105468588A CN 201410240320 A CN201410240320 A CN 201410240320A CN 105468588 A CN105468588 A CN 105468588A
- Authority
- CN
- China
- Prior art keywords
- string
- matching
- state
- prefix
- suffix
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明的实施例提供一种字符串匹配方法和装置,涉及计算机领域,能够使得字符串匹配的效率更高,其方法为:首先中央处理器将模式字符串分为前缀和后缀,并分别生成前缀状态自动机和后缀状态自动机,图形处理器利用前缀状态自动机对待匹配字符串进行字符串匹配,匹配成功后,由中央处理器利用后缀状态自动机对待匹配字符串进行第二次字符串匹配。本发明实施例用于字符串匹配。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及字符串匹配方法和装置。
背景技术
为了应对网络入侵,需要对端口接收到的字符串进行监控,即需要对接收到的字符串按照特定的模式字符串进行分段匹配,为了使得字符串匹配更加高效,现有技术往往在异构计算环境中使用没有回溯跳转的多模式字符串匹配算法进行字符串匹配,即首先由CPU建立状态自动机,该自动机不包括字符匹配失败后的跳转,并将该自动机发送到图形处理器的全局内存中,以便图形处理器上的线程利用该自动机对接收到的待匹配字符串进行匹配,由于采用了异构计算环境,则图形处理器上的多个线程同时对同一字符串的不同分段进行匹配,为了防止漏匹配,每个分段之间都有重叠区域,该重叠区域的长度为模式字符串长度的最大值。
上述没有回溯跳转的多模式字符串匹配算法是将接收到的长度为n的待匹配字符串分为n段,对于任意一个分段i(1≤i≤n),该分段从待匹配字符串的第i个字符开始,到第n个字符结束,当在字符串匹配的过程中遇到匹配失败的情况时,该匹配过程结束,即在利用上述状态自动机进行字符串匹配的时候不进行状态回溯,当较少的模式字符串之间的相似度较低的情况下,可能每个线程检测到一个或几个字符时即可以判断匹配失败,避免了图形处理器对重叠区域进行检测时浪费的系统资源。
在利用现有力学模型试验装置进行试验的过程中,发明人发现现有技术至少存在如下问题:
当模式字符串的数量较多的时候,每个模式字符串中相似段出现的概率更高,每个线程需要检测更多的字符才可能判断为匹配失败,导致每个线程的执行时间会大幅增加,从而导致在较多模式字符串的情况下,字符串匹配的效率低。
发明内容
本发明的实施例提供一种字符串匹配方法和装置,通过将模式字符串进行分段匹配,能够使得字符串匹配更加高效。
本发明实施例的第一方面是提供字符串匹配方法,该方法包括:
获取前缀状态自动机,所述前缀状态自动机是由模式字符串的前缀按照多模式字符串匹配算法构成的状态自动机,所述模式字符串为字符串匹配时所用的特征字符串,所述前缀由从所述模式字符串第一个字符开始逐个提取预设值个数的字符组合而成;
获取待匹配字符串,根据所述前缀状态自动机对所述待匹配字符串进行字符串匹配,以便所述字符串匹配成功后中央处理器利用所述模式字符串的后缀对所述待匹配字符串进行第二次字符串匹配。
结合第一方面,在第一种可能的实现方式中,所述获取状态自动机包括:
从存储器中获取所述前缀状态自动机,所述前缀状态自动机按照稀疏矩阵的方式存储在所述存储器内存中,所述稀疏矩阵中的行表示所述前缀状态自动机的各个状态,所述稀疏矩阵每一列对应一个输入,所述稀疏矩阵中的列表示所述前缀状态自动机接收到每一列对应的输入时状态跳转的下一跳状态,其中-1表示在该行所示的状态下有字符串被成功匹配;
在所述存储器中存储有匹配列表,所述匹配列表包括所述前缀状态自动机的每一个状态以及与每一个状态对应的地址,若其中第一状态对应的地址不为空,则表示在该第一状态下有所述模式字符串的前缀被成功匹配,该第一状态对应的地址为被成功匹配到的所述模式字符串的前缀的存储地址。
结合第一方面,在第二种可能的实现方式中,所述根据所述前缀状态自动机对所述待匹配字符串进行字符串匹配包括:
获取所述待匹配字符串,从所述待匹配字符串的首个字符开始,由至少一个线程将所述待匹配字符串中的每个字符输入到所述前缀状态自动机中,当所使用的线程数量大于1时,每两个线程输入的所述待匹配字符串中相同位置的字符数量等于所述预设值;
当所述待匹配字符串中的每一个字符都在所述前缀状态自动机中完成匹配过程,则生成匹配结果,并将所述匹配结果存储在存储器中。
第二方面,提供一种字符串匹配方法,该方法包括:
获取后缀状态自动机,所述后缀状态自动机是由模式字符串的后缀按照多模式字符串匹配算法构成的状态自动机,且所述后缀状态自动机不包括状态回溯,所述模式字符串为字符串匹配时所用的特征字符串,所述后缀的长度为所述模式字符串的长度与预设值的差值;
在图形处理器对所述待匹配字符串进行字符串匹配成功后,获取待匹配字符串,根据所述后缀状态自动机对所述待匹配字符串进行字符串匹配。
结合第二方面,在第一种可能的实现方式中,所述方法还包括:
将所述模式字符串拆分为前缀和后缀,所述前缀由从所述模式字符串第一个字符开始逐个提取所述预设值个数的字符组合而成,所述后缀为所述模式字符串减去所述前缀后剩下的部分;
将所述前缀按照多模式字符串匹配算法生成前缀状态自动机并存储于存储器中,将所述后缀按照多模式字符串匹配算法生成后缀状态自动机,并去除所述后缀状态自动机中的状态回溯。
结合第二方面,在第二种可能的实现方式中,所述前缀状态自动机与所述后缀状态自动机按照稀疏矩阵的方式存储在所述存储器中,所述稀疏矩阵中的行表示所述后缀状态自动机的各个状态,所述稀疏矩阵每一列对应一个输入,所述稀疏矩阵中的列表示所述后缀状态自动机接收到每一列对应的输入时状态跳转的下一跳状态,其中-1表示在该行所示的状态下有字符串被成功匹配;
在所述存储器中存储有匹配列表,所述匹配列表包括所述后缀状态自动机的每一个状态以及与每一个状态对应的地址,若其中第一状态对应的地址不为空,则表示在该第一状态下有所述模式字符串的后缀被成功匹配,该第一状态对应的地址为被成功匹配到的所述模式字符串的后缀的存储地址。
结合第二方面,在第三种可能的实现方式中,所述获取待匹配字符串,根据所述状态自动机对所述待匹配字符串进行字符串匹配包括:
获取所述待匹配字符串,从所述待匹配字符串的第一位置开始,由至少一个线程将所述待匹配字符串中的所述第一位置以后的每个字符输入到所述后缀状态自动机中,所述第一位置为所述前缀在所述待匹配字符串中被成功匹配到的位置,当所使用的线程数量大于1时,每两个线程输入的所述待匹配字符串中相同位置的字符数量等于所有所述后缀中长度的最大值。
第三方面,提供一种字符串匹配装置,所述装置包括:
自动机获取单元,用于获取前缀状态自动机,所述前缀状态自动机是由模式字符串的前缀按照多模式字符串匹配算法构成的状态自动机,所述模式字符串为字符串匹配时所用的特征字符串,所述前缀由从所述模式字符串第一个字符开始逐个提取预设值个数的字符组合而成;
匹配单元,用于从所述自动机获取单元获取所述前缀状态自动机,获取待匹配字符串,根据所述前缀状态自动机对所述待匹配字符串进行字符串匹配,以便所述字符串匹配成功后中央处理器利用所述模式字符串的后缀对所述待匹配字符串进行第二次字符串匹配。
结合第三方面,在第一种可能的实现方式中,所述自动机获取单元具体用于:
从存储器中获取所述前缀状态自动机,所述前缀状态自动机按照稀疏矩阵的方式存储在所述内存中,所述稀疏矩阵中的行表示所述前缀状态自动机的各个状态,所述稀疏矩阵每一列对应一个输入,所述稀疏矩阵中的列表示所述前缀状态自动机接收到每一列对应的输入时状态跳转的下一跳状态,其中-1表示在该行所示的状态下有字符串被成功匹配;
在所述存储器中存储有匹配列表,所述匹配列表包括所述状态自动机的每一个状态以及与每一个状态对应的地址,若其中第一状态对应的地址不为空,则表示在该第一状态下有所述模式字符串的前缀被成功匹配,该第一状态对应的地址为被成功匹配到的所述模式字符串的前缀的存储地址。
结合第三方面,在第二种可能的实现方式中,所述匹配单元具体用于:
获取所述待匹配字符串,从所述待匹配字符串的首个字符开始,由至少一个线程将所述待匹配字符串中的每个字符输入到所述状态自动机中,当所使用的线程数量大于1时,每两个线程输入的所述待匹配字符串中相同位置的字符数量等于所述预设值;
当所述待匹配字符串中的每一个字符都在所述前缀状态自动机中完成匹配过程,则生成匹配结果,并将所述匹配结果存储在存储器中。
第四方面,提供一种字符串匹配装置,所述装置包括:
自动机获取单元,用于获取状态自动机,所述状态自动机是由模式字符串的后缀按照多模式字符串匹配算法构成的状态自动机,且所述状态自动机不包括状态回溯,所述模式字符串为字符串匹配时所用的特征字符串,所述后缀的长度为所述模式字符串的长度与预设值的差值;
匹配单元,用于从所述自动机获取单元获取所述后缀状态自动机,在图形处理器对所述待匹配字符串进行字符串匹配成功后,获取待匹配字符串,根据所述后缀状态自动机对所述待匹配字符串进行字符串匹配。
结合第四方面,在第一种可能的实现方式中,所属装置还包括:
拆分单元,用于将所述模式字符串拆分为前缀和后缀,所述前缀由从所述模式字符串第一个字符开始逐个提取所述预设值个数的字符组合而成,所述后缀为所述模式字符串减去所述前缀后剩下的部分;
状态自动机生成单元,用于从所述拆分单元中获取所述前缀与所述后缀,将所述前缀按照多模式字符串匹配算法生成前缀状态自动机并存储于存储器中,将所述后缀按照多模式字符串匹配算法生成后缀状态自动机,并去除所述后缀状态自动机中的状态回溯。
结合第四方面,在第二种可能的实现方式中,所述前缀状态自动机与所述后缀状态自动机按照稀疏矩阵的方式存储在所述存储器中,所述稀疏矩阵中的行表示所述后缀状态自动机的各个状态,所述稀疏矩阵每一列对应一个输入,所述稀疏矩阵中的列表示所述后缀状态自动机接收到每一列对应的输入时状态跳转的下一跳状态,其中-1表示在该行所示的状态下有字符串被成功匹配;
在所述存储器中存储有匹配列表,所述匹配列表包括所述后缀状态自动机的每一个状态以及与每一个状态对应的地址,若其中第一状态对应的地址不为空,则表示在该第一状态下有所述模式字符串的后缀被成功匹配,该第一状态对应的地址为被成功匹配到的所述模式字符串的后缀的存储地址。
结合第四方面,在第三种可能的实现方式中,所述匹配单元具体用于:
获取所述待匹配字符串,从所述待匹配字符串的第一位置开始,由至少一个线程将所述待匹配字符串中的所述第一位置以后的每个字符输入到所述后缀状态自动机中,所述第一位置为所述前缀在所述待匹配字符串中被成功匹配到的位置,当所使用的线程数量大于1时,每两个线程输入的所述待匹配字符串中相同位置的字符数量等于所有所述后缀中长度的最大值。
本发明的实施例提供一种字符串匹配方法和装置,首先中央处理器将模式字符串分为前缀和后缀,并分别生成前缀状态自动机和后缀状态自动机,图形处理器利用前缀状态自动机对待匹配字符串进行字符串匹配,匹配成功后,由中央处理器利用后缀状态自动机对待匹配字符串进行第二次字符串匹配,能够使得字符串匹配的效率更高。
附图说明
为了更清楚地说明本发明的实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明的实施例提供的字符串匹配方法的流程示意图一;
图2为本发明的实施例提供的字符串匹配方法的流程示意图二;
图3为本发明的实施例提供的字符串匹配方法的流程示意图三;
图4为本发明的实施例提供的前缀状态自动机的工作原理图;
图5为本发明的实施例提供的后缀状态自动机的工作原理图一;
图6为本发明的实施例提供的后缀状态自动机的工作原理图二;
图7为本发明的实施例提供的一种字符串匹配的场景示意图;
图8为本发明的实施例提供的字符串匹配装置的结构示意图一;
图9为本发明的实施例提供的字符串匹配装置的结构示意图二;
图10为本发明的实施例提供的字符串匹配装置的结构示意图三;
图11为本发明的实施例提供的字符串匹配设备的结构示意图一;
图12为本发明的实施例提供的字符串匹配设备的结构示意图二。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
本发明的实施例提供一种字符串匹配方法,如图1所示,该方法包括:
S101、图形处理器获取前缀状态自动机,前缀状态自动机是由模式字符串的前缀按照多模式字符串匹配算法构成的状态自动机,模式字符串为字符串匹配时所用的特征字符串,前缀由从模式字符串第一个字符开始逐个提取预设值个数的字符组合而成。
S102、图形处理器获取待匹配字符串,根据前缀状态自动机对待匹配字符串进行字符串匹配,以便所述字符串匹配成功后中央处理器利用所述模式字符串的后缀对所述待匹配字符串进行第二次字符串匹配。
本发明的实施例提供一种字符串匹配方法,首先由图形处理器获取前缀状态自动机,而后利用该前缀状态自动机对待匹配字符串进行字符串匹配,匹配成功后,以便中央处理器利用后缀状态自动机对待匹配字符串进行第二次字符串匹配,能够使得字符串匹配的效率更高。
本发明的实施例提供字符串匹配方法,如图2所示,该方法包括:
S201、中央处理器获取后缀状态自动机,后缀状态自动机是由模式字符串的后缀按照多模式字符串匹配算法构成的状态自动机,且后缀状态自动机不包括状态回溯,模式字符串为字符串匹配时所用的特征字符串,后缀的长度为模式字符串的长度与预设值的差值。
S202、在图形处理器对所述待匹配字符串进行字符串匹配成功后,中央处理器获取待匹配字符串,根据后缀状态自动机对待匹配字符串进行字符串匹配。
本发明的实施例提供一种字符串匹配方法,当由图形处理器获取前缀状态自动机,并利用该前缀状态自动机对待匹配字符串进行字符串匹配成功后,中央处理器获取后缀状态自动机,并利用后缀状态自动机对待匹配字符串进行第二次字符串匹配,能够使得字符串匹配的效率更高。
本发明的实施例提供一种字符串匹配方法,如图3所示,该方法包括:
S301、中央处理器将模式字符串分割为前缀和后缀。
具体的,可通过以下方法实现:
现有技术中为了防止字符串的漏检,往往图形处理器上的线程在对待匹配字符串进行匹配的时候,每两个线程处理的待匹配字符串的重叠区域的长度为模式字符串的最大长度,当模式字符串的长度比较大时,则线程之间处理的重叠区域的长度就比较大,中央处理器此时可以首先将模式字符串进行分割,将模式字符串分割为前缀和后缀两个部分,前缀的长度可以预先设定。
示例性的,当有模式字符串ABACCCCC、ABACDDD、EFGH和WXYZAAAAA,可以预先设定前缀的字符个数为上述模式串字符中长度最小的模式字符串的长度,也可以设定为其他数值,这里设定分割出来的前缀字符串的字符个数为4,即将上述模式字符串进行分割后形成的前缀分别为ABAC、EFGH和WXYZ,上述第一个模式字符串分割而成的前缀为ABAC,后缀为CCCC,第二个模式字符串分割而成的前缀为ABAC,后缀为DDD,第三个模式字符串的前缀为EFGH,没有后缀,第四个模式字符串被分给而成的前缀为WXYZ后缀为AAAAA。
S302、中央处理器根据模式字符串的前缀和后缀分别生成前缀状态自动机和后缀状态自动机。
具体的,可通过以下方法实现:
对于模式字符串的前缀,中央处理器可以将模式字符串的前缀按照多模式字符串匹配算法生成对应的前缀状态自动机,该状态自动机包括状态回溯,即在字符匹配失败的时候存在失败跳转,该状态自动机用于在待匹配字符串中检测所有模式字符串的前缀。
示例性的,对于上述模式字符串的前缀ABAC、EFGH和WXYZ,构建前缀状态自动机,该自动机的原理如图4所示,其中圆圈中的数字表示各个状态,数字0代表起始状态,实线箭头代表状态的跳转方向,该箭头指向的最后一个状态表示有字符串被成功匹配,箭头上的字符代表该箭头起始端的状态下一跳的输入,虚线箭头表示出现字符匹配失败后的状态跳转方向,其失败跳转的原则是在当前状态下检测到的字符与该状态的下一跳的输入不一致时,则将跳转到与该检测字符一致的第一状态上,且该第一状态为起始状态的下一跳,若没有与该检测字符一致的第一状态,则直接跳转到起始状态,图4中只标出了状态1的失败跳转,其他状态的失败跳转与上述原则相同,
在图中省略。
对于上述模式字符串的后缀,中央处理器可以将模式字符串的后缀按照多模式字符串匹配算法生成对应的后缀状态自动机,而后从该状态机中去掉状态回溯,即在字符匹配失败的时候直接结束检测不存在失败跳转,该状态自动机用于在待匹配字符串中检测所有模式字符串的后缀。
示例性的,对于上述模式字符串的后缀CCCC、DDD和AAAAA,由于后缀CCCC、DDDD和AAAAA对应的前缀不同,可以分别生成两个后缀状态自动机,生成的后缀状态自动机的原理分别如图5和图6所示,其中圆圈中的数字表示各个状态,数字0′和0"代表起始状态,实线箭头代表状态的跳转方向,该箭头指向的最后一个状态表示有字符串被成功匹配,箭头上的字符代表该箭头起始端的状态下一跳的输入。
S303、中央处理器将前缀状态自动机存储在存储器中。
具体的,可通过以下方法实现:
中央处理器将生成的前缀状态自动机采用稀疏矩阵的方式存储在存储器中,该处理器可以为内存或全局显存,稀疏矩阵中的第一列表示前缀状态自动机中的各个状态,稀疏矩阵中的第一行表示前缀状态自动机的各个输入,其中的数字表示在该数字所在行所示的状态下检测到该数字所在列的输入时,状态跳转的下一跳状态,-1表示在该行所示的状态下检测到该数字所在列的输入时,有字符串被成功匹配;
对于成功匹配到了哪个字符串,则是由另外一个匹配列表进行存储,以上述前缀状态自动机为例,该列表中包括前缀状态自动机的每一个状态以及与每一个状态对应的地址,若其中第一状态对应的地址不为空,则表示在该第一状态下有模式字符串的前缀被成功匹配,该第一状态对应的地址为被成功匹配到的模式字符串的前缀的存储地址。
示例性的,如上述前缀状态自动机采用的稀疏矩阵可以表示为下表1所示的内容:
表1
前缀状态自动机的匹配列表可以表示为下表2所示的内容:
表2
图5所示的后缀状态自动机采用的稀疏矩阵可以表示为下表3所示的内容:
输入A | 输入B | 输入C | 输入D | 其他 | |
状态0′ | 0′ | 0′ | 1′ | 5′ | 0′ |
状态1′ | 0′ | 0′ | 2′ | 0′ | 0′ |
状态2′ | 0′ | 0′ | 3′ | 0′ | 0′ |
状态3′ | 0′ | 0′ | 4′ | 0′ | 0′ |
状态4′ | -1 | -1 | -1 | -1 | -1 |
状态5′ | 0′ | 0′ | 0′ | 6′ | 0′ |
状态6′ | 0′ | 0′ | 0′ | 7′ | 0′ |
状态7′ | -1 | -1 | -1 | -1 | -1 |
表3
图5所示的后缀状态自动机的匹配列表可以表示为下表4所示的内容:
状态0′ | 状态1′ | 状态2′ | 状态3′ | 状态4′ | 状态5′ | 状态6′ | 状态7′ | |
地址 | NULL | NULL | NULL | NULL | 地址指针 | NULL | NULL | 地址指针 |
表4
图6所示的后缀状态自动机采用的稀疏矩阵可以表示为下表5所示的内容:
输入A | 输入B | 输入C | 输入D | 其他 | |
状态0" | 1" | 0" | 0" | 0" | 0" |
状态1" | 2" | 0" | 0" | 0" | 0" |
状态2" | 3" | 0" | 0" | 0" | 0" |
状态3" | 4" | 0" | 0" | 0" | 0" |
状态4" | 5" | 0" | 0" | 0" | 0" |
状态5" | -1 | -1 | -1 | -1 | -1 |
表5
图6所示的后缀状态自动机的匹配列表可以表示为下表6所示的内容:
表6
S304、图形处理器获取前缀状态自动机并对待匹配字符串进行匹配。
具体的,可通过以下方法实现:
图形处理器从上述存储器中获取上述前缀状态自动机,该获取过程可以通过零拷贝技术从存储器中读取该前缀状态自动机,而后可以从网卡获取待匹配字符串,并可以将该待匹配字符串进行分段,为每个分段开启一个线程利用多模式字符串匹配算法对待匹配字符串进行字符串匹配,该匹配所使用的程序若是在OpenCL架构下进行,则可以使用OpenCL的C语言根据多模式字符串匹配算法的原理编写而成的一段适合图形处理器运行的程序。
示例性的,当图形处理器获取到的待匹配字符串为XXX~XXXABACCCCCXXX~XXX,假设XXX~XXX为32个字节,图形处理器可以将接收到的待匹配字符串分段可以为从首字符开始每32+4个字符分为一段,由于上述模式字符串的前缀的长度预设为4个字符,则每相邻的两段的重叠区域为4个字符,图形处理器从存储器中获取上述如图4所示的前缀状态自动机,为每一段分配一个线程利用上述前缀状态自动机对待匹配字符串进行字符匹配上述分段如图7所示,重叠区域表示线程1与线程2处理的待匹配字符串的相同位置的字符,该匹配过程可以为从上述前缀状态自动机的起始状态开始,由第一个线程从待匹配字符串的首字符开始逐个字符得输入到该前缀状态自动机中,直到该线程将该分段内的所有字符都输入到该前缀状态自动机中为止,如表1所示,在起始状态0时,当前32个字符X进行输入时都失败跳转到起始状态0,当输入字符A时前缀状态自动机从状态0跳转到状态1,当继续输入字符B时,跳转到状态2,继续输入字符A时跳转到状态3,最后输入字符C时,跳转到状态4,此时,图形处理器从该稀疏矩阵中读取到数值-1,即表示在该状态下有前缀被成功匹配,而后图形处理器经过查找上述列表2中的匹配链表,从该匹配链表中得到匹配的字符串的地址,从而通过该地址查找到匹配成功的字符串为ABAC,并生成匹配结果,并将该匹配结果发送到中央处理器可读取的内存中,该匹配结果表示前缀字符串ABAC被成功匹配,并且指示该字符串ABAC在待匹配字符串中的位置;
图形处理器开启第二个线程从上述待匹配字符串的第33个字符A开始利用上述前缀状态自动机按照相同方法向后逐个输入32+4个字符,为了防止漏检,第一个线程和第二个线程所输入的待匹配字符串中相同位置的字符数量为4个,即是前缀字符串的字符长度,按照上述字符匹配过程,图形处理器开启n个线程对待匹配字符串进行匹配,直到待匹配字符串中所有字符都被输入到上述前缀状态自动机中。
需要说明的是,上述所有线程可以并行工作,即所有线程可以同时利用上述前缀状态自动机将各自处理的字符输入到该自动机中并生成对应的处理结果。
S305、中央处理器获取后缀状态自动机并对待匹配字符串进行匹配。
具体的,可以通过以下方法实现:
当中央处理器从内存中读取图形处理器存储的匹配结果,若判断出有前缀字符串被成功匹配,则从该内存中查找到匹配成功的前缀在待匹配字符串中的位置,并在待匹配字符串中被成功匹配的前缀字符串的最后一个字符开始向后开始逐个将待匹配字符串中的字符输入到后缀状态自动机中。
示例性的,当中央处理器从内存中读取到图形处理在待匹配字符串XXX~XXXABACCCCCXXX~XXX中成功匹配到了前缀字符串ABAC,并且位置为待匹配字符串的第33个字符到第36个字符,则找到该位置,并从待匹配字符串的第37个字符开始将待匹配字符串中的字符逐个输入到后缀状态自动机,如表3所示,状态0′表示当前输入字符为C(因为后缀字符串CCCC和DDD对应的前缀为ABAC,这里可以取前缀的最后一个字符C作为初始状态0′),当输入上述待匹配字符串的第37个字符C时,则从起始状态0′开始,跳转到状态1′,继续输入C时跳转到状态2′,再次输入字符C时跳转到状态3′,最后再输入字符C时,跳转到状态4′,通过表3可知此时中央处理器读取到数值-1即表示有后缀字符串被成功匹配,而后中央处理器经过查找上述列表4中的匹配链表,从该匹配链表中得到匹配的字符串的地址,从而通过该地址查找到匹配成功的字符串为CCCC,而后继续输入字符X,此时匹配结束跳转到状态0,直到待匹配字符串的最后一个字符被输入到后缀状态自动机中,此时中央处理器可确定在待匹配字符串中有前缀ABAC和后缀CCCC被成功匹配,即有模式字符串ABACCCCC在待匹配字符串中被成功匹配;
假设当中央处理器从内存中读取到图形处理在待匹配字符串XXX~XXXWXYZAAAAAXXX~XXX中成功匹配到了前缀字符串WXYZ,并且位置为待匹配字符串的第33个字符到第36个字符,则找到该位置,并从待匹配字符串的第37个字符开始将待匹配字符串中的字符逐个输入到后缀状态自动机,如表5所示,状态0"表示当前输入字符为Z(因为后缀字符串AAAAA对应的前缀为WXYZ,这里可以取前缀的最后一个字符Z作为初始状态0"),当输入上述待匹配字符串的第37个字符A时,则从起始状态0"开始,跳转到状态1",继续输入A时跳转到状态2",再次输入字符A时跳转到状态3",最后再输入字符A时,跳转到状态4",最后再输入字符A时,跳转到状态5",通过表5可知此时中央处理器读取到数值-1即表示有后缀字符串被成功匹配,而后中央处理器经过查找上述列表6中的匹配链表,从该匹配链表中得到匹配的字符串的地址,从而通过该地址查找到匹配成功的字符串为AAAAA,而后继续输入字符X,此时匹配结束跳转到状态0",直到待匹配字符串的最后一个字符被输入到后缀状态自动机中,此时中央处理器可确定在待匹配字符串中有前缀WXYZ和后缀AAAAA被成功匹配,即有模式字符串WXYZAAAAA在待匹配字符串中被成功匹配。
需要说明的是,中央处理器从内存中读取图形处理器的匹配结果并对待匹配字符串进行字符匹配的操作可以和图形处理器并行运行。
本发明的实施例提供一种字符串匹配方法,首先中央处理器将模式字符串分为前缀和后缀,并分别生成前缀状态自动机和后缀状态自动机,图形处理器利用前缀状态自动机对待匹配字符串进行字符串匹配,匹配成功后,由中央处理器利用后缀状态自动机对待匹配字符串进行第二次字符串匹配,能够使得字符串匹配的效率更高。
本发明实施例提供一种字符串匹配装置01,如图8所示,该装置01包括:
自动机获取单元011,用于获取前缀状态自动机,前缀状态自动机是由模式字符串的前缀按照多模式字符串匹配算法构成的状态自动机,模式字符串为字符串匹配时所用的特征字符串,前缀由从模式字符串第一个字符开始逐个提取预设值个数的字符组合而成;
匹配单元012,用于从自动机获取单元011获取前缀状态自动机,获取待匹配字符串,根据前缀状态自动机对待匹配字符串进行字符串匹配,以便字符串匹配成功后中央处理器利用模式字符串的后缀对待匹配字符串进行第二次字符串匹配。
进一步的,自动机获取单元011具体用于:
从存储器中获取前缀状态自动机,前缀状态自动机按照稀疏矩阵的方式存储在存储器内存中,稀疏矩阵中的行表示前缀状态自动机的各个状态,稀疏矩阵每一列对应一个输入,稀疏矩阵中的列表示前缀状态自动机接收到每一列对应的输入时状态跳转的下一跳状态,其中-1表示在该行所示的状态下有字符串被成功匹配;
在存储器中存储有匹配列表,匹配列表包括状态自动机的每一个状态以及与每一个状态对应的地址,若其中第一状态对应的地址不为空,则表示在该第一状态下有模式字符串的前缀被成功匹配,该第一状态对应的地址为被成功匹配到的模式字符串的前缀的存储地址。
更进一步的,匹配单元012具体用于:
获取待匹配字符串,从待匹配字符串的首个字符开始,由至少一个线程将待匹配字符串中的每个字符输入到状态自动机中,当所使用的线程数量大于1时,每两个线程输入的待匹配字符串中相同位置的字符数量等于预设值;
当待匹配字符串中的每一个字符都在前缀状态自动机中完成匹配过程,则生成匹配结果,并将匹配结果存储在存储器中。
本实施例也适用于上述各方法实施例,本实施例中装置的各个单元的工作流程和工作原理参见上述各方法实施例中的描述,在此不再赘述。
本发明的实施例提供字符串匹配装置,首先获取前缀状态自动机,而后利用该前缀状态自动机对待匹配字符串进行字符串匹配,匹配成功后,以便利用后缀状态自动机对待匹配字符串进行第二次字符串匹配,能够使得字符串匹配的效率更高。
本发明的实施例提供字符串匹配装置02,如图9所示,装置02包括:
自动机获取单元021,用于获取状态自动机,状态自动机是由模式字符串的后缀按照多模式字符串匹配算法构成的状态自动机,且状态自动机不包括状态回溯,模式字符串为字符串匹配时所用的特征字符串,后缀的长度为模式字符串的长度与预设值的差值;
匹配单元022,用于从自动机获取单元021获取后缀状态自动机,在图形处理器对待匹配字符串进行字符串匹配成功后,获取待匹配字符串,根据后缀状态自动机对待匹配字符串进行字符串匹配。
进一步的,如图10所示,该装置02还包括:
拆分单元023,用于将模式字符串拆分为前缀和后缀,前缀由从模式字符串第一个字符开始逐个提取预设值个数的字符组合而成,后缀为模式字符串减去前缀后剩下的部分;
状态自动机生成单元024,用于从拆分单元023中获取前缀与后缀,将前缀按照多模式字符串匹配算法生成前缀状态自动机并存储于存储器中,将后缀按照多模式字符串匹配算法生成后缀状态自动机,并去除后缀状态自动机中的状态回溯。
优选的,前缀状态自动机与后缀状态自动机按照稀疏矩阵的方式存储在存储器中,稀疏矩阵中的行表示后缀状态自动机的各个状态,稀疏矩阵每一列对应一个输入,稀疏矩阵中的列表示后缀状态自动机接收到每一列对应的输入时状态跳转的下一跳状态,其中-1表示在该行所示的状态下有字符串被成功匹配;
在存储器中存储有匹配列表,匹配列表包括后缀状态自动机的每一个状态以及与每一个状态对应的地址,若其中第一状态对应的地址不为空,则表示在该第一状态下有模式字符串的后缀被成功匹配,该第一状态对应的地址为被成功匹配到的模式字符串的后缀的存储地址。
更进一步的,匹配单元022具体用于:
获取待匹配字符串,从待匹配字符串的第一位置开始,由至少一个线程将待匹配字符串中的第一位置以后的每个字符输入到后缀状态自动机中,第一位置为前缀在待匹配字符串中被成功匹配到的位置,当所使用的线程数量大于1时,每两个线程输入的待匹配字符串中相同位置的字符数量等于所有后缀中长度的最大值。
本实施例也适用于上述各方法实施例,本实施例中装置的各个单元的工作流程和工作原理参见上述各方法实施例中的描述,在此不再赘述。
本发明的实施例提供一种字符串匹配装置,当获取前缀状态自动机,并利用该前缀状态自动机对待匹配字符串进行字符串匹配成功后,获取后缀状态自动机,并利用后缀状态自动机对待匹配字符串进行第二次字符串匹配,能够使得字符串匹配的效率更高。
本发明的实施例提供一种字符串匹配设备03,如图11所示,该设备03包括至少一个接口031、存储器032,总线033以及图形处理器034与中央处理器035,其中存储器032、图形处理器034与中央处理器035通过总线033相连接,该存储器032用于存储指令,该图形处理器034用于读取该指令用于:
通过该接口031获取前缀状态自动机,前缀状态自动机是由模式字符串的前缀按照多模式字符串匹配算法构成的状态自动机,模式字符串为字符串匹配时所用的特征字符串,前缀由从模式字符串第一个字符开始逐个提取预设值个数的字符组合而成;
通过该接口031获取待匹配字符串,根据前缀状态自动机对待匹配字符串进行字符串匹配,以便字符串匹配成功后中央处理器利用模式字符串的后缀对待匹配字符串进行第二次字符串匹配。
进一步的,图形处理器034读取该指令具体用于:
通过该接口031从存储器中获取前缀状态自动机,前缀状态自动机按照稀疏矩阵的方式存储在内存中,稀疏矩阵中的行表示前缀状态自动机的各个状态,稀疏矩阵每一列对应一个输入,稀疏矩阵中的列表示前缀状态自动机接收到每一列对应的输入时状态跳转的下一跳状态,其中-1表示在该行所示的状态下有字符串被成功匹配;
在存储器中存储有匹配列表,匹配列表包括前缀状态自动机的每一个状态以及与每一个状态对应的地址,若其中第一状态对应的地址不为空,则表示在该第一状态下有模式字符串的前缀被成功匹配,该第一状态对应的地址为被成功匹配到的模式字符串的前缀的存储地址。
更进一步的,图形处理器034读取该指令具体用于:
通过该接口031获取待匹配字符串,从待匹配字符串的首个字符开始,由至少一个线程将待匹配字符串中的每个字符输入到前缀状态自动机中,当所使用的线程数量大于1时,每两个线程输入的待匹配字符串中相同位置的字符数量等于预设值;
当待匹配字符串中的每一个字符都在前缀状态自动机中完成匹配过程,则生成匹配结果,并将匹配结果存储在存储器中。
本实施例也适用于上述各方法实施例,本实施例中设备的工作流程和工作原理参见上述各方法实施例中的描述,在此不再赘述。
本发明的实施例提供一种字符串匹配设备,首先由图形处理器获取前缀状态自动机,而后利用该前缀状态自动机对待匹配字符串进行字符串匹配,匹配成功后,以便中央处理器利用后缀状态自动机对待匹配字符串进行第二次字符串匹配,能够使得字符串匹配的效率更高。
本发明的实施例提供一种字符串匹配设备04,如图12所示,该设备04包括至少一个接口041、存储器042,总线043以及图形处理器044与中央处理器045,其中存储器042、图形处理器044与中央处理器045通过总线043相连接,该存储器042用于存储指令,该中央处理器045用于读取该指令用于:
通过接口041获取后缀状态自动机,后缀状态自动机是由模式字符串的后缀按照多模式字符串匹配算法构成的状态自动机,且后缀状态自动机不包括状态回溯,模式字符串为字符串匹配时所用的特征字符串,后缀的长度为模式字符串的长度与预设值的差值;
通过接口041在图形处理器对待匹配字符串进行字符串匹配成功后,获取待匹配字符串,根据后缀状态自动机对待匹配字符串进行字符串匹配。
进一步的,中央处理器045执行该指令还用于:
将模式字符串拆分为前缀和后缀,前缀由从模式字符串第一个字符开始逐个提取预设值个数的字符组合而成,后缀为模式字符串减去前缀后剩下的部分;
将前缀按照多模式字符串匹配算法生成前缀状态自动机并存储于存储器中,将后缀按照多模式字符串匹配算法生成后缀状态自动机,并去除后缀状态自动机中的状态回溯。
优选的,前缀状态自动机与后缀状态自动机按照稀疏矩阵的方式存储在存储器中,稀疏矩阵中的行表示后缀状态自动机的各个状态,稀疏矩阵每一列对应一个输入,稀疏矩阵中的列表示后缀状态自动机接收到每一列对应的输入时状态跳转的下一跳状态,其中-1表示在该行所示的状态下有字符串被成功匹配;
在存储器中存储有匹配列表,匹配列表包括后缀状态自动机的每一个状态以及与每一个状态对应的地址,若其中第一状态对应的地址不为空,则表示在该第一状态下有模式字符串的后缀被成功匹配,该第一状态对应的地址为被成功匹配到的模式字符串的后缀的存储地址。
再进一步的,中央处理器045读取该指令具体用于:
获取待匹配字符串,从待匹配字符串的第一位置开始,由至少一个线程将待匹配字符串中的第一位置以后的每个字符输入到后缀状态自动机中,第一位置为前缀在待匹配字符串中被成功匹配到的位置,当所使用的线程数量大于1时,每两个线程输入的待匹配字符串中相同位置的字符数量等于所有后缀中长度的最大值。
本实施例也适用于上述各方法实施例,本实施例中设备的工作流程和工作原理参见上述各方法实施例中的描述,在此不再赘述。
本发明的实施例提供一种字符串匹配设备,当由图形处理器获取前缀状态自动机,并利用该前缀状态自动机对待匹配字符串进行字符串匹配成功后,中央处理器获取后缀状态自动机,并利用后缀状态自动机对待匹配字符串进行第二次字符串匹配,能够使得字符串匹配的效率更高。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (14)
1.字符串匹配方法,其特征在于,包括:
获取前缀状态自动机,所述前缀状态自动机是由模式字符串的前缀按照多模式字符串匹配算法构成的状态自动机,所述模式字符串为字符串匹配时所用的特征字符串,所述前缀由从所述模式字符串第一个字符开始逐个提取预设值个数的字符组合而成;
获取待匹配字符串,根据所述前缀状态自动机对所述待匹配字符串进行字符串匹配,以便所述字符串匹配成功后中央处理器利用所述模式字符串的后缀对所述待匹配字符串进行第二次字符串匹配。
2.根据权利要求1所述的方法,其特征在于,所述获取前缀状态自动机包括:
从存储器中获取所述前缀状态自动机,所述前缀状态自动机按照稀疏矩阵的方式存储在所述存储器内存中,所述稀疏矩阵中的行表示所述前缀状态自动机的各个状态,所述稀疏矩阵每一列对应一个输入,所述稀疏矩阵中的列表示所述前缀状态自动机接收到每一列对应的输入时状态跳转的下一跳状态,其中-1表示在该行所示的状态下有字符串被成功匹配;
在所述存储器中存储有匹配列表,所述匹配列表包括所述前缀状态自动机的每一个状态以及与每一个状态对应的地址,若其中第一状态对应的地址不为空,则表示在该第一状态下有所述模式字符串的前缀被成功匹配,该第一状态对应的地址为被成功匹配到的所述模式字符串的前缀的存储地址。
3.根据权利要求1所述的方法,其特征在于,所述获取待匹配字符串,所述根据所述前缀状态自动机对所述待匹配字符串进行字符串匹配包括:
获取所述待匹配字符串,从所述待匹配字符串的首个字符开始,由至少一个线程将所述待匹配字符串中的每个字符输入到所述前缀状态自动机中,当所使用的线程数量大于1时,每两个线程输入的所述待匹配字符串中相同位置的字符数量等于所述预设值;
当所述待匹配字符串中的每一个字符都在所述前缀状态自动机中完成匹配过程,则生成匹配结果,并将所述匹配结果存储在存储器中。
4.字符串匹配方法,其特征在于,包括:
获取后缀状态自动机,所述后缀状态自动机是由模式字符串的后缀按照多模式字符串匹配算法构成的状态自动机,且所述后缀状态自动机不包括状态回溯,所述模式字符串为字符串匹配时所用的特征字符串,所述后缀的长度为所述模式字符串的长度与预设值的差值;
在图形处理器对所述待匹配字符串进行字符串匹配成功后,获取待匹配字符串,根据所述后缀状态自动机对所述待匹配字符串进行字符串匹配。
5.根据权利要求4所述的方法,其特征在于,在获取所述状态自动机之前,所述方法还包括:
将所述模式字符串拆分为前缀和后缀,所述前缀由从所述模式字符串第一个字符开始逐个提取所述预设值个数的字符组合而成,所述后缀为所述模式字符串减去所述前缀后剩下的部分;
将所述前缀按照多模式字符串匹配算法生成前缀状态自动机并存储于存储器中,将所述后缀按照多模式字符串匹配算法生成后缀状态自动机,并去除所述后缀状态自动机中的状态回溯。
6.根据权利要求5所述方法,其特征在于,所述前缀状态自动机与所述后缀状态自动机按照稀疏矩阵的方式存储在所述存储器中,所述稀疏矩阵中的行表示所述后缀状态自动机的各个状态,所述稀疏矩阵每一列对应一个输入,所述稀疏矩阵中的列表示所述后缀状态自动机接收到每一列对应的输入时状态跳转的下一跳状态,其中-1表示在该行所示的状态下有字符串被成功匹配;
在所述存储器中存储有匹配列表,所述匹配列表包括所述后缀状态自动机的每一个状态以及与每一个状态对应的地址,若其中第一状态对应的地址不为空,则表示在该第一状态下有所述模式字符串的后缀被成功匹配,该第一状态对应的地址为被成功匹配到的所述模式字符串的后缀的存储地址。
7.根据权利要求4所述的方法,其特征在于,所述获取待匹配字符串,根据所述状态自动机对所述待匹配字符串进行字符串匹配包括:
获取所述待匹配字符串,从所述待匹配字符串的第一位置开始,由至少一个线程将所述待匹配字符串中的所述第一位置以后的每个字符输入到所述后缀状态自动机中,所述第一位置为所述前缀在所述待匹配字符串中被成功匹配到的位置,当所使用的线程数量大于1时,每两个线程输入的所述待匹配字符串中相同位置的字符数量等于所有所述后缀中长度的最大值。
8.字符串匹配装置,其特征在于,所述装置包括:
自动机获取单元,用于获取前缀状态自动机,所述前缀状态自动机是由模式字符串的前缀按照多模式字符串匹配算法构成的状态自动机,所述模式字符串为字符串匹配时所用的特征字符串,所述前缀由从所述模式字符串第一个字符开始逐个提取预设值个数的字符组合而成;
匹配单元,用于从所述自动机获取单元获取所述前缀状态自动机,获取待匹配字符串,根据所述前缀状态自动机对所述待匹配字符串进行字符串匹配,以便所述字符串匹配成功后中央处理器利用所述模式字符串的后缀对所述待匹配字符串进行第二次字符串匹配。
9.根据权利要求8所述的装置,其特征在于,所述自动机获取单元具体用于:
从存储器中获取所述前缀状态自动机,所述前缀状态自动机按照稀疏矩阵的方式存储在所述内存中,所述稀疏矩阵中的行表示所述前缀状态自动机的各个状态,所述稀疏矩阵每一列对应一个输入,所述稀疏矩阵中的列表示所述前缀状态自动机接收到每一列对应的输入时状态跳转的下一跳状态,其中-1表示在该行所示的状态下有字符串被成功匹配;
存储器存储器在所述存储器中存储有匹配列表,所述匹配列表包括所述状态自动机的每一个状态以及与每一个状态对应的地址,若其中第一状态对应的地址不为空,则表示在该第一状态下有所述模式字符串的前缀被成功匹配,该第一状态对应的地址为被成功匹配到的所述模式字符串的前缀的存储地址。
10.根据权利要求8所述的装置,其特征在于,所述匹配单元具体用于:
获取所述待匹配字符串,从所述待匹配字符串的首个字符开始,由至少一个线程将所述待匹配字符串中的每个字符输入到所述状态自动机中,当所使用的线程数量大于1时,每两个线程输入的所述待匹配字符串中相同位置的字符数量等于所述预设值;
当所述待匹配字符串中的每一个字符都在所述前缀状态自动机中完成匹配过程,则生成匹配结果,并将所述匹配结果存储在存储器中。
11.字符串匹配装置,其特征在于,包括:
自动机获取单元,用于获取状态自动机,所述状态自动机是由模式字符串的后缀按照多模式字符串匹配算法构成的状态自动机,且所述状态自动机不包括状态回溯,所述模式字符串为字符串匹配时所用的特征字符串,所述后缀的长度为所述模式字符串的长度与预设值的差值;
匹配单元,用于从所述自动机获取单元获取所述后缀状态自动机,在图形处理器对所述待匹配字符串进行字符串匹配成功后,获取待匹配字符串,根据所述后缀状态自动机对所述待匹配字符串进行字符串匹配。
12.根据权利要求11所述的装置,其特征在于,所属装置还包括:
拆分单元,用于将所述模式字符串拆分为前缀和后缀,所述前缀由从所述模式字符串第一个字符开始逐个提取所述预设值个数的字符组合而成,所述后缀为所述模式字符串减去所述前缀后剩下的部分;
状态自动机生成单元,用于从所述拆分单元中获取所述前缀与所述后缀,将所述前缀按照多模式字符串匹配算法生成前缀状态自动机并存储于存储器存储器中,将所述后缀按照多模式字符串匹配算法生成后缀状态自动机,并去除所述后缀状态自动机中的状态回溯。
13.根据权利要求12所述的装置,其特征在于,所述前缀状态自动机与所述后缀状态自动机按照稀疏矩阵的方式存储在所述存储器存储器中,所述稀疏矩阵中的行表示所述后缀状态自动机的各个状态,所述稀疏矩阵每一列对应一个输入,所述稀疏矩阵中的列表示所述后缀状态自动机接收到每一列对应的输入时状态跳转的下一跳状态,其中-1表示在该行所示的状态下有字符串被成功匹配;
在所述存储器中存储有匹配列表,所述匹配列表包括所述后缀状态自动机的每一个状态以及与每一个状态对应的地址,若其中第一状态对应的地址不为空,则表示在该第一状态下有所述模式字符串的后缀被成功匹配,该第一状态对应的地址为被成功匹配到的所述模式字符串的后缀的存储地址。
14.根据权利要求11所述的装置,其特征在于,所述匹配单元具体用于:
获取所述待匹配字符串,从所述待匹配字符串的第一位置开始,由至少一个线程将所述待匹配字符串中的所述第一位置以后的每个字符输入到所述后缀状态自动机中,所述第一位置为所述前缀在所述待匹配字符串中被成功匹配到的位置,当所使用的线程数量大于1时,每两个线程输入的所述待匹配字符串中相同位置的字符数量等于所有所述后缀中长度的最大值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410240320.4A CN105468588A (zh) | 2014-05-30 | 2014-05-30 | 字符串匹配方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410240320.4A CN105468588A (zh) | 2014-05-30 | 2014-05-30 | 字符串匹配方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105468588A true CN105468588A (zh) | 2016-04-06 |
Family
ID=55606303
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410240320.4A Pending CN105468588A (zh) | 2014-05-30 | 2014-05-30 | 字符串匹配方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105468588A (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106649217A (zh) * | 2016-10-28 | 2017-05-10 | 东软集团股份有限公司 | 数据的匹配方法及装置 |
CN107277109A (zh) * | 2017-05-18 | 2017-10-20 | 西安交通大学 | 针对压缩流量的多字符串匹配方法 |
CN108460280A (zh) * | 2018-02-09 | 2018-08-28 | 北京交通大学 | 一种网络攻击字符匹配方法及装置 |
CN108846672A (zh) * | 2018-06-25 | 2018-11-20 | 北京奇虎科技有限公司 | 个性化地址生成方法、装置、电子设备及存储介质 |
CN108920483A (zh) * | 2018-04-28 | 2018-11-30 | 南京搜文信息技术有限公司 | 基于后缀数组的字符串快速匹配方法 |
CN111258960A (zh) * | 2020-01-09 | 2020-06-09 | 奇安信科技集团股份有限公司 | Nfa状态关系式的构建方法、字符串处理方法及装置 |
CN111526134A (zh) * | 2020-04-13 | 2020-08-11 | 杭州迪普信息技术有限公司 | 一种报文检测系统、方法及装置 |
CN111831869A (zh) * | 2020-06-30 | 2020-10-27 | 深圳价值在线信息科技股份有限公司 | 一种字符串的查重方法、装置、终端设备及存储介质 |
CN112579839A (zh) * | 2019-09-30 | 2021-03-30 | 奇安信安全技术(珠海)有限公司 | 大规模特征的多模匹配方法、装置及存储介质 |
CN112668131A (zh) * | 2021-01-04 | 2021-04-16 | 北京全路通信信号研究设计院集团有限公司 | 配线表生成方法、装置、设备及计算机可读存储介质 |
CN115982311A (zh) * | 2023-03-21 | 2023-04-18 | 广东海洋大学 | 一种链表的生成方法、装置、终端设备及存储介质 |
-
2014
- 2014-05-30 CN CN201410240320.4A patent/CN105468588A/zh active Pending
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106649217A (zh) * | 2016-10-28 | 2017-05-10 | 东软集团股份有限公司 | 数据的匹配方法及装置 |
CN107277109A (zh) * | 2017-05-18 | 2017-10-20 | 西安交通大学 | 针对压缩流量的多字符串匹配方法 |
CN107277109B (zh) * | 2017-05-18 | 2020-03-31 | 西安交通大学 | 针对压缩流量的多字符串匹配方法 |
CN108460280A (zh) * | 2018-02-09 | 2018-08-28 | 北京交通大学 | 一种网络攻击字符匹配方法及装置 |
CN108920483A (zh) * | 2018-04-28 | 2018-11-30 | 南京搜文信息技术有限公司 | 基于后缀数组的字符串快速匹配方法 |
CN108846672B (zh) * | 2018-06-25 | 2021-11-23 | 北京奇虎科技有限公司 | 个性化地址生成方法、装置、电子设备及存储介质 |
CN108846672A (zh) * | 2018-06-25 | 2018-11-20 | 北京奇虎科技有限公司 | 个性化地址生成方法、装置、电子设备及存储介质 |
CN112579839B (zh) * | 2019-09-30 | 2022-07-01 | 奇安信安全技术(珠海)有限公司 | 大规模特征的多模匹配方法、装置及存储介质 |
CN112579839A (zh) * | 2019-09-30 | 2021-03-30 | 奇安信安全技术(珠海)有限公司 | 大规模特征的多模匹配方法、装置及存储介质 |
CN111258960A (zh) * | 2020-01-09 | 2020-06-09 | 奇安信科技集团股份有限公司 | Nfa状态关系式的构建方法、字符串处理方法及装置 |
CN111258960B (zh) * | 2020-01-09 | 2023-07-28 | 奇安信科技集团股份有限公司 | Nfa状态关系式的构建方法、字符串处理方法及装置 |
CN111526134A (zh) * | 2020-04-13 | 2020-08-11 | 杭州迪普信息技术有限公司 | 一种报文检测系统、方法及装置 |
CN111831869A (zh) * | 2020-06-30 | 2020-10-27 | 深圳价值在线信息科技股份有限公司 | 一种字符串的查重方法、装置、终端设备及存储介质 |
CN111831869B (zh) * | 2020-06-30 | 2023-11-03 | 深圳价值在线信息科技股份有限公司 | 一种字符串的查重方法、装置、终端设备及存储介质 |
CN112668131A (zh) * | 2021-01-04 | 2021-04-16 | 北京全路通信信号研究设计院集团有限公司 | 配线表生成方法、装置、设备及计算机可读存储介质 |
CN112668131B (zh) * | 2021-01-04 | 2023-11-17 | 北京全路通信信号研究设计院集团有限公司 | 配线表生成方法、装置、设备及计算机可读存储介质 |
CN115982311A (zh) * | 2023-03-21 | 2023-04-18 | 广东海洋大学 | 一种链表的生成方法、装置、终端设备及存储介质 |
CN115982311B (zh) * | 2023-03-21 | 2023-06-20 | 广东海洋大学 | 一种链表的生成方法、装置、终端设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105468588A (zh) | 字符串匹配方法和装置 | |
US10796244B2 (en) | Method and apparatus for labeling training samples | |
US9990583B2 (en) | Match engine for detection of multi-pattern rules | |
CN109951547B (zh) | 事务请求并行处理方法、装置、设备和介质 | |
US10645105B2 (en) | Network attack detection method and device | |
WO2018072408A1 (zh) | 一种内存分析方法、装置、系统以及计算设备 | |
KR101617696B1 (ko) | 데이터 정규표현식의 마이닝 방법 및 장치 | |
CN109413016B (zh) | 一种基于规则的报文检测方法和装置 | |
US20180083770A1 (en) | Detecting encoding attack | |
CN103886229A (zh) | 一种提取pe文件特征的方法及装置 | |
CN106469186A (zh) | 一种字符串比较的方法及装置 | |
CN110750789A (zh) | 解混淆方法、装置、计算机设备和存储介质 | |
CN109491679B (zh) | 一种cpld在线升级方法及装置 | |
CN107577943B (zh) | 基于机器学习的样本预测方法、装置及服务器 | |
CN111737966A (zh) | 文档重复度检测方法、装置、设备和可读存储介质 | |
CN105404635A (zh) | 字符串匹配的方法、设备和异构计算系统 | |
CN112783508A (zh) | 文件的编译方法、装置、设备以及存储介质 | |
JP2011191985A (ja) | シンボリック実行支援プログラム、方法及び装置 | |
CN112306452A (zh) | 归并排序算法处理业务数据的方法、装置及系统 | |
CN110263540A (zh) | 一种代码标识方法及装置 | |
CN113792232B (zh) | 页面特征计算方法、装置、电子设备、介质及程序产品 | |
CN114637988A (zh) | 一种面向二进制的函数级软件随机化方法 | |
CN104699513A (zh) | 一种文件处理方法及装置 | |
CN105630789A (zh) | 一种查询计划转化方法及装置 | |
CN111444223A (zh) | 基于异步装饰器的双缓存方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20160406 |