专利名称:匹配规则包含次数指示符的并行多模式匹配的方法及系统的制作方法
技术领域:
本发明属于文本或网络内容处理技术领域,尤其涉及一种匹配规则包含次 数指示符的并行多模式匹配的方法及系统。
背景技术:
多模式匹配 (Multiple Pattern String Matching)是计算机科学领域 中的基本问题之一,用于快速判断某一数据块中是否包含规则集中的某一或某 些规则。多模式匹配技术广泛应用于文本处理、网络内容分析、入侵检测、生 物信息学、信息检索等领域。
解决并行多模式匹配问题的经典方法之一,是基于有限状态自动机的方 法。该方法最初由Alfred V. Aho和Margaret J. Corasick于1975年提出, 通常以发明者的名字简称为AC多模式匹配算法。AC算法的突出优点在于其具 有相同的最坏和平均性能,可用于处理各种模式集合(例如不等长、大规 模),是一种高性能的多模式匹配方法。
对于各种确定性规则的模式匹配来说,AC算法(以及其变种)无疑是个 非常优秀的算法,但却无法处理含有通配符的非确定性规则的匹配。
中国专利申请200810104416.2 "—种并行多模式匹配的方法及系统"提 供了一种应用AC算法来处理含有通配符的非确定规则的并行多模式匹配的方 法。该发明公开了一种并行多模式匹配的系统,包括
生成模块,用于读取包含匹配规则的规则集,将所述规则集中包含通配符 的匹配规则从通配符处分割成所述匹配规则的子规则,所述子规则中不包含通 配符,所述规则集中不包含通配符的匹配规则作为其自身的子规则,并将所有 子规则按照AC算法生成AC自动机,并输出所述AC自动机;
匹配模块,用于读取搜索对象和所述AC自动机,按AC算法应用所述AC 自动机进行搜索,判断所述搜索对象是否按子规则在所述匹配规则中的顺序匹
7配所述匹配规则的所有子规则,如果是,则所述搜索对象匹配所述匹配规则, 并输出匹配结果。
在具体的搜索过程中,当用AC算法成功匹配一个子规则后,按子规则标 识查找匹配状态表,获得子规则所属匹配规则的子规则总数和最近匹配的子规 则顺序号,比较子规则顺序号和最近匹配的子规则顺序号,如果子规则顺序号 比最近匹配的子规则顺序号大1,则根据子规则顺序号和子规则总数判断所述 子规则是否是最后一个子规则,如果是,则搜索对象同匹配规则匹配,如果不 是,则更新匹配状态表中最近匹配子规则顺序号为当前匹配子规则的顺序号。
上述发明将每个含有通配符的规则分解成多个子规则,并逐个检查各个子 规则是否按顺序匹配成功。该方法解决了用AC算法来处理象"334566*990000" 这样的含有通配符的非确定规则的并行多模式匹配问题,但其方法仅能用来处 理两个子模式之间的字符是任意的、长度也是任意的这种形式,并且各个子规 则只匹配一次。如果要更加精确指明子规则的连续重复次数,如"334566 (990000) 〈2,10〉"(其中的次数指示符〈2, 10〉表示,子规则"990000"重复 匹配2 — 10次),则上述发明则无法处理。
发明内容
为解决上述问题,本发明公开了一种匹配规则包含次数指示符的并行多模 式匹配的方法及系统,以应用AC算法来处理指定子规则连续重复次数的并行 多模式匹配。
本发明公开了一种匹配规则包含次数指示符的并行多模式匹配的系统,包
括
生成模块,用于读取包含匹配规则的规则集,将所述规则集中包含次数指 示符的匹配规则从次数指示符处分割成所述匹配规则的子规则,所述子规则为 确定规则,所述次数指示符规定的次数为所述次数指示符前面相连的子规则对 应的连续重复次数,所述规则集中为确定规则的匹配规则作为其自身的子规 则,所述子规则对应的连续重复次数为1,并将所有子规则按照AC算法生成
AC自动机;
匹配模块,用于读取搜索对象,按AC算法应用所述AC自动机进行搜索,判断所述搜索对象是否按子规则在所述匹配规则中的顺序和子规则对应的规 定连续重复次数匹配所述匹配规则的所有子规则,如果是,则所述搜索对象匹 配所述匹配规则,并输出匹配结果。
所述生成模块进一步包括规则解析模块、匹配状态表生成模块和节点处理 模块,
所述规则解析模块,用于进行所述将所述规则集中包含次数指示符的匹配 规则从次数指示符处分割成所述匹配规则的子规则,所述规则集中为确定规则
的匹配规则作为其自身的子规则,并将所有子规则按照AC算法生成AC自动机 的过程,并在确定所述匹配规则的子规则后,标识所述匹配规则的子规则;
所述节点处理模块,用于生成节点规则表,所述节点规则表记录在所述 AC自动机中的终态节点处匹配的所有子规则标识、每个所述子规则对应的规 定连续重复次数和子规则长度,以供所述匹配模块在搜索时进行査找;
所述匹配状态表生成模块,用于生成匹配状态表,所述匹配状态表中的一 行对应于所述规则集中的一个匹配规则,每行记录对应匹配规则包含的子规则 总数、最近匹配的子规则的顺序号、最近匹配的子规则的规定连续重复次数、 最近匹配的子规则的已连续重复次数和最近匹配的子规则的匹配位置,以供所 述匹配模块在搜索时进行查找。
所述在确定所述匹配规则的子规则后,标识所述匹配规则的子规则进一步 为标识所述匹配规则,使用所述子规则所属匹配规则的标识和所述子规则在匹 配规则中的顺序号标识所述子规则。
所述匹配模块进一步包括状态转移模块、参数获得模块、匹配判断模块、 重复判断模块、结果输出模块和搜索继续模块,
所述状态转移模块,用于进行所述读取搜索对象,按AC算法应用所述AC 自动机进行搜索的过程,当转移到终态节点时,启动所述参数获得模块;
所述参数获得模块,用于查找所述节点规则表以获得匹配的子规则标识、 所述子规则对应的规定连续重复次数和子规则长度,査找匹配状态表,获得所 述子规则所属匹配规则的子规则总数、最近匹配的子规则顺序号、最近匹配的 子规则的规定连续重复次数、最近匹配的子规则的已连续重复次数和最近匹配 的子规则的匹配位置;所述匹配判断模块,用于判断是否满足所述子规则的顺序号减去所述最近 匹配的子规则顺序号等于1并且所述最近匹配的子规则的已连续重复次数在 所述最近匹配的子规则的规定连续重复次数范围内,或者,所述子规则是所述 匹配规则的第一个子规则并且获得的最近匹配的子规则顺序号大于1,如果满 足,则将所述匹配状态表中所述匹配规则对应的最近匹配的子规则顺序号更新 为所述子规则的顺序号,最近匹配的子规则的规定连续重复次数更新为所述子 规则对应的规定连续重复次数,最近匹配的子规则的己连续重复次数更新为 1,最近匹配的子规则的匹配位置更新为所述子规则的匹配位置,启动所述结
果输出模块,否则,启动所述重复判断模块;
所述重复判断模块,用于判断是否满足所述子规则的顺序号同所述最近匹 配的子规则顺序号相同,并且所述子规则的匹配位置减去所述最近匹配的子规 则的匹配位置等于所述子规则长度,如果满足,则将所述匹配状态表中所述匹 配规则对应的最近匹配的子规则的己连续重复次数加1,最近匹配的子规则的 匹配位置更新为所述子规则的匹配位置,启动所述结果输出模块,否则,启动 所述搜索继续模块;
所述结果输出模块,用于根据所述子规则顺序号和所述子规则总数判断所 述子规则是否是所述匹配规则的最后一个子规则,并且判断所述匹配规则表中 所述匹配规则对应的最近匹配的子规则的己连续重复次数是否在最近匹配的 子规则的规定连续重复次数范围内,如果都为是,则所述搜索对象同所述匹配 规则匹配,输出匹配结果,在所述判断都完成后,启动所述搜索继续模块;
所述搜索继续模块,用于判断在当前终态节点处是否还有匹配的子规则, 如果有,启动所述匹配判断模块,否则,在所述搜索对象还有未读取字符时, 继续读取所述搜索对象,启动所述状态转移模块。
本发明还公开了一种匹配规则包含次数指示符的并行多模式匹配的方法, 包括
步骤l,读取包含匹配规则的规则集,将所述规则集中包含次数指示符的 匹配规则从次数指示符处分割成所述匹配规则的子规则,所述子规则为确定规 则,所述次数指示符规定的次数为所述次数指示符前面相连的所述子规则对应 的规定连续重复次数,所述规则集中为确定规则的匹配规则作为其自身的子规则,所述子规则对应的规定连续重复次数为1,并将所有子规则按照AC算法
生成AC自动机;
步骤2,读取搜索对象,按AC算法应用所述AC自动机进行搜索,判断所述搜索对象是否按子规则在所述匹配规则中的顺序和子规则对应的规定连续重复次数匹配所述匹配规则的所有子规则,如果是,则所述搜索对象匹配所述匹配规则,并输出匹配结果。
所述步骤1进一步包括,
步骤61,在确定所述匹配规则的子规则后,标识所述匹配规则的子规则;
步骤62,在生成所述AC自动机后,生成节点规则表,记录在所述AC自动机中的终态节点处匹配的所有子规则标识、每个所述子规则对应的规定连续重复次数和子规则长度,以供在搜索时进行查找;
步骤63,生成匹配状态表,所述匹配状态表中的一行对应于所述规则集中的一个匹配规则,每行记录对应匹配规则包含的子规则总数、最近匹配的子规则的顺序号、最近匹配的子规则的规定连续重复次数、最近匹配的子规则的已连续重复次数和最近匹配的子规则的匹配位置,以供在搜索时进行査找。
所述步骤61进一步为标识所述匹配规则,使用所述子规则所属匹配规则
所述步骤2进一步包括,
步骤81,查找所述节点规则表以获得匹配的子规则标识、所述子规则对应的规定连续重复次数和子规则长度,査找匹配状态表,获得所述子规则所属匹配规则的子规则总数、最近匹配的子规则顺序号、最近匹配的子规则的规定连续重复次数、最近匹配的子规则的已连续重复次数和最近匹配的子规则的匹配位置;
步骤82,判断是否满足所述子规则的顺序号减去所述最近匹配的子规则顺序号等于1并且所述最近匹配的子规则的已连续重复次数在所述最近匹配的子规则的规定连续重复次数范围内,或者,所述子规则是所述匹配规则的第一个子规则并且获得的最近匹配的子规则顺序号大于l,如果满足,则将所述匹配状态表中所述匹配规则对应的最近匹配的子规则顺序号更新为所述子规则的顺序号,最近匹配的子规则的规定连续重复次数更新为所述子规则对应的
ii规定连续重复次数,最近匹配的子规则的己连续重复次数更新为1,最近匹配
的子规则的匹配位置更新为所述子规则的匹配位置,执行步骤84,否则,执行步骤83;
步骤83,判断是否满足所述子规则的顺序号同所述最近匹配的子规则顺序号相同,并且所述子规则的匹配位置减去所述最近匹配的子规则的匹配位置等于所述子规则长度,如果满足,则将所述匹配状态表中所述匹配规则对应的最近匹配的子规则的已连续重复次数加1,最近匹配的子规则的匹配位置更新为所述子规则的匹配位置,执行步骤84,否则,执行步骤85;
步骤84,根据所述子规则的顺序号和所述子规则总数判断所述子规则是否是所述匹配规则的最后一个子规则,并且判断所述匹配规则表中所述匹配规则对应的最近匹配的子规则的已连续重复次数是否在最近匹配的子规则的规定连续重复次数范围内,如果都为是,则所述搜索对象同所述匹配规则匹配,输出匹配结果,在所述判断都完成后,执行步骤85;
步骤85,判断在当前终态节点处是否还有匹配的子规则,如果有,执行步骤82,否则,在所述搜索对象还有未读取字符时,继续读取所述搜索对象,执行步骤81。
本发明的有益效果在于,通过将含有次数指示符的匹配规则在次数指示符处分割成子规则,使得AC算法可以用于包含次数指示符的匹配规则,进而实现对含有次数指示符的匹配规则的并行多模式匹配。
图1是本发明的系统结构示意图2是本发明的方法流程图3是本发明的生成模块结构示意图4是本发明的匹配模块结构示意图5是本发明方法具体实施例的流程图。
具体实施例方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
本发明系统,包括生成模块101和匹配模块102,如图1所示。
生成模块101,用于读取包含匹配规则的规则集,将规则集中包含次数指示符的匹配规则从次数指示符处分割成该匹配规则的子规则,该子规则为确定规则,次数指示符规定的次数为该次数指示符前面相连的子规则对应的规定连续重复次数,规则集中为确定规则的匹配规则作为其自身的子规则,该子规则对应的规定连续重复次数为1,并将所有子规则按照AC算法生成AC自动机。
所述确定规则,是规则中每个字符都已知,不包含不明确的字符,如通配符或次数指示符的规则。
对于为确定规则的匹配规则,由于其子规则是其自身,所以规则集中为确定规则的匹配规则可以不做替换直接保留。
匹配模块102,用于读取搜索对象,按AC算法应用生成模块101生成的AC自动机进行搜索,判断该搜索对象是否按子规则在匹配规则中的顺序和子规则对应的规定连续重复次数匹配该匹配规则的所有子规则,如果是,则所述搜索对象匹配该匹配规则,并输出匹配结果。
本发明的方法如图2所示,包括
步骤S201,读取包含匹配规则的规则集,将规则集中包含次数指示符的匹配规则从次数指示符处分割成该匹配规则的子规则,该子规则为确定规则,次数指示符规定的次数为该次数指示符前面相连的子规则对应的规定连续重复次数,规则集中为确定规则的匹配规则作为其自身的子规则,该子规则对应的规定连续重复次数为l,并将所有子规则按照AC算法生成AC自动机;对于为确定规则的匹配规则,由于其子规则是其自身,所以规则集中为确定规则的匹配规则可以不做替换直接保留。
步骤S202,读取搜索对象,按AC算法应用生成的AC自动机进行搜索,判断搜索对象是否按子规则在匹配规则中的顺序和子规则对应的规定连续重复次数匹配该匹配规则的所有子规则,如果是,则所述搜索对象匹配该匹配规则,并输出匹配结果。
生成模块101还用以生成匹配状态表和节点规则表。
匹配状态表用以记录匹配规则的子规则总数、最近匹配的子规则的顺序号、最近匹配的子规则的规定连续重复次数、最近匹配的子规则的己连续重复次数和最近匹配的子规则的匹配位置。
节点规则表用以记录在所述AC自动机中的终态节点处匹配的所有子规则标识、每个所述子规则对应的规定连续重复次数和子规则长度。
生成模块201包括,规则解析模块301、节点处理模块302和匹配状态表生成模块303,如图3所示。
规则解析模块301,用于逐条判断规则集中的匹配规则是否包含次数指示符,如果包含,则查找匹配规则中次数指示符的位置,在次数指示符位置处将匹配规则分割为子规则,该子规则为确定规则,如果不包含,并且匹配规则为确定规则,则该匹配规则作为其自身的子规则,将规则集中的匹配规则用该匹配规则的子规则替换,使规则集转换为仅包含确定规则的规则集,并用子规则所属的匹配规则的标识和该子规则在该匹配规则中的顺序号标识该子规则。
例如, 一个匹配规则"334566 (990000) 〈2, 10〉3467",标识该匹配规则为23,该规则包含一个次数指示符"<2, 10>",说明子规则"990000"的连续重复次数最小是2,最大是IO。如果次数指示符的第二项为空(如"〈2,〉")则表示最大连续重复次数不限。该匹配规则被分割为三个子规则"334566"、"990000"和"3467",子规则的顺序号分别是1、 2和3。采用二维数组将两个子规则分别标识为(23,1)、 (23,2)和(23, 3)。
匹配状态表生成模块302,用于生成匹配状态表,该匹配状态表中的一行对应于规则集中的一个匹配规则,每行记录对应匹配规则包含的子规则总数、最近匹配的子规则的顺序号、最近匹配的子规则的匹配位置、最近匹配的子规则的已连续重复次数和最近匹配的子规则的规定连续重复次数,以供匹配模块102在搜索时査找。
例如,规则集中有N个匹配规则,建立一个NX5的二维表格,其中行号表示匹配规则的标识,第1列记录该匹配规则包含的子规则总数,第2列记录最近匹配的子规则的顺序号,第3列记录最近匹配的子规则的匹配位置,第4列记录最近匹配的子规则的已连续重复次数,第5列记录最近匹配的子规则的规定连续重复次数,并且每个匹配规则的最近匹配的子规则的顺序号、匹配位置、已连续重复次数以及规定连续重复次数均初始化为O。子规则的匹配位置,为该子规则在搜索对象中匹配的字符串中最后一个字
符在搜索对象中的位置。例如,子规则为"123",搜索对象为"2312345",则该子规则的匹配位置为5。
子规则的已连续重复次数,为子规则被连续匹配的次数。
子规则长度,为子规则包含的字符数量。
节点处理模块303,用于生成节点规则表,记录在所述AC自动机中的终态节点处匹配的所有子规则、每个子规则对应的规定连续重复次数和子规则长度,以供匹配模块102在搜索时查找。
具体实施方式
为,对应于每个终态节点建立一个链表,链表中存有该终态节点对应的子规则标识、每个子规则对应的规定连续重复次数和子规则长度。其中的子规则标识为所述的二维数组,例如(23,2),表示第23条匹配规则的第2个子规则以该状态节点为终态节点。其中规定连续重复次数也为二维数组,例如<2,10>,表示连续重复次数最小是2,最大是IO。如果次数指示符的第二项为空(如"〈2,〉")则表示最大连续重复次数不限。
匹配模块102包括状态转移模块401、参数获得模块402、匹配判断模块403、重复判断模块404、结果输出模块405和搜索继续模块406,如图4所示。
状态转移模块401,用于读取搜索对象,按AC算法应用AC自动机进行搜索,当转移到终态节点时,启动参数获得模块402。
参数获得模块402,用于査找节点规则表以获得匹配的子规则标识、该子规则对应的规定连续重复次数和子规则长度,査找匹配状态表,获得该子规则所属匹配规则的子规则总数、最近匹配的子规则顺序号、最近匹配的子规则的规定连续重复次数、最近匹配的子规则的已连续重复次数和最近匹配的子规则的匹配位置。
具体实施方式
为用一个整数P表示当前搜索位置,初始时P为开始位置0。用一个整数S表示AC自动机的当前状态,初始时S为初始状态O,每读取一个搜索对象的字符,位置P就增加1,同时在AC自动机中査找,确定下一状态,并修改S值为该状态。
匹配判断模块403,用于判断是否满足匹配的子规则的顺序号减去获得的
15最近匹配的子规则顺序号等于1并且获得的最近匹配的子规则的己连续重复次数在获得的最近匹配的子规则的规定连续重复次数范围内,或者,匹配的子规则是其所属匹配规则的第一个子规则并且获得的最近匹配的子规则顺序号大于l,如果满足,则将匹配状态表中该匹配规则对应的最近匹配的子规则顺序号更新为所述子规则的顺序号,最近匹配的子规则的规定连续重复次数更新为该子规则对应的规定连续重复次数,最近匹配的子规则的已连续重复次数更新为1,最近匹配的子规则的匹配位置更新为所述子规则的匹配位置,启动结
果输出模块405,否则,启动重复判断模块404。
重复判断模块404,用于判断是否满足匹配的子规则的顺序号同获得的最近匹配的子规则顺序号相同,并且匹配的子规则的匹配位置减去获得的最近匹配的子规则的匹配位置等于获得的子规则长度,如果满足,则将匹配状态表中该匹配规则对应的最近匹配的子规则的已连续重复次数加1,最近匹配的子规则的匹配位置更新为该子规则的匹配位置,启动结果输出模块405,否则,启动搜索继续模块406。
结果输出模块405,用于根据获得的子规则顺序号和子规则总数判断所述子规则是否是匹配规则的最后一个子规则,并且判断匹配规则表中该匹配规则对应的最近匹配的子规则的已连续重复次数是否在最近匹配的子规则的规定连续重复次数范围内,如果都为是,则搜索对象同该匹配规则匹配,输出匹配结果,在上述判断都完成后,启动搜索继续模块406。
搜索继续模块406,用于判断在当前终态节点处是否还有匹配的子规则,如果有,启动匹配判断模块403,否则,在搜索对象还有未读取字符时,继续读取搜索对象的下一个字符,将搜索位置P加1启动状态转移模块401。
本发明的方法的具体实施例如图5所示。
步骤S501,读取规则集。
步骤S502,标识规则集的匹配规则,判断规则集的匹配规则中是否包含次数指示符,如果包含,在次数指示符处将匹配规则划分为不包含次数指示符的子规则,如果不包含并且匹配规则为确定规则,则该匹配规则作为其自身的子规则,然后将所有子规则按AC算法生成AC自动机,并生成节点规则表和匹配状态表。节点规则表,记录在所述AC自动机中的终态节点处匹配的所有子规则和每个子规则对应的规定连续重复次数和子规则长度,子规则用其所属匹配规则的标识和该子规则在匹配规则中的顺序号标识、。包含次数指示符的匹配规则的子规则对应的规定连续重复次数为次数指示符规定的次数,为确定规则的匹配规则的子规则对应的规定连续重复次数为1。
匹配状态表中的每一行对应于一个匹配规则,记录该匹配规则的子规则总数、最近匹配的子规则的顺序号、最近匹配的子规则的匹配位置、最近匹配的子规则的己连续重复次数和最近匹配的子规则的规定连续重复次数,每个匹配规则的最近匹配的子规则的顺序号、匹配位置、已连续重复次数和规定连续重复次数均初始化为0。
步骤S503,读取搜索对象。
步骤S504,按AC算法转移状态。
步骤S505,判断状态节点是否为终态节点,如果是,执行步骤S506,否则,执行步骤S503。
步骤S506,查找节点规则表,获得该终态节点匹配的子规则的标识和该子规则对应的规定连续重复次数和子规则长度,按子规则标识中的所属匹配规则的标识查找匹配状态表,获得子规则所属匹配规则的子规则总数和最近匹配的子规则的顺序号、最近匹配的子规则的匹配位置、最近匹配的子规则的已连续重复次数和最近匹配的子规则的规定连续重复次数。
步骤S507,判断是否满足子规则的顺序号减去获得的最近匹配的子规则顺序号等于1并且获得的最近匹配的子规则的已连续重复次数在获得的最近匹配的子规则的规定连续重复次数范围内,或者,该子规则是所述匹配规则的第一个子规则并且获得的最近匹配的子规则顺序号大于l,如果满足,执行步骤S509,否则,执行步骤S508。
步骤S508,判断是否满足该子规则的顺序号同获得的最近匹配的子规则顺序号相同,并且该子规则的匹配位置减去获得的最近匹配的子规则的匹配位置等于该子规则长度,如果满足,则执行步骤S510,否则,执行步骤S512。
步骤S509,将所述匹配状态表中匹配规则对应的最近匹配的子规则顺序号更新为该子规则的顺序号,最近匹配的子规则的规定连续重复次数更新为该
17子规则对应的规定连续重复次数,最近匹配的子规则的已连续重复次数更新为
1,最近匹配的子规则的匹配位置更新为该子规则的匹配位置,执行步骤S511。 步骤S510,将匹配状态表中匹配规则对应的最近匹配的子规则的已连续 重复次数加l,最近匹配的子规则的匹配位置更新为该子^ii则的匹配位置,执 行步骤S511。
步骤S511,根据该子规则的顺序号和获得的子规则总数判断该子规则是 否是匹配规则的最后一个子规则,并且判断匹配规则表中匹配规则对应的最近 匹配的子规则的已连续重复次数是否在最近匹配的子规则的规定连续重复次 数范围内,如果都为是,则搜索对象同所述匹配规则匹配,输出匹配结果,在 所述判断都完成后,执行步骤S512。
步骤S512,判断在当前终态节点处是否还有匹配的子规则,如果有,执 行步骤S506,否则,在搜索对象还有未读取字符时,执行步骤S503。
本领域的技术人员在不脱离权利要求书确定的本发明的精神和范围的条 件下,还可以对以上内容进行各种各样的修改。因此本发明的范围并不仅限于 以上的说明,而是由权利要求书的范围来确定的。
权利要求
1.一种匹配规则包含次数指示符的并行多模式匹配的系统,其特征在于,包括生成模块,用于读取包含匹配规则的规则集,将所述规则集中包含次数指示符的匹配规则从次数指示符处分割成所述匹配规则的子规则,所述子规则为确定规则,所述次数指示符规定的次数为所述次数指示符前面相连的子规则对应的规定连续重复次数,所述规则集中为确定规则的匹配规则作为其自身的子规则,所述子规则对应的规定连续重复次数为1,并将所有子规则按照AC算法生成AC自动机;匹配模块,用于读取搜索对象,按AC算法应用所述AC自动机进行搜索,判断所述搜索对象是否按子规则在所述匹配规则中的顺序和子规则对应的规定连续重复次数匹配所述匹配规则的所有子规则,如果是,则所述搜索对象匹配所述匹配规则,并输出匹配结果。
2.如权利要求1所述的匹配规则包含次数指示符的并行多模式匹配的系 统,其特征在于,所述生成模块进一步包括规则解析模块、匹配状态表生成模 块和节点处理模块,所述规则解析模块,用于进行所述将所述规则集中包含次数指示符的匹配 规则从次数指示符处分割成所述匹配规则的子规则,所述规则集中为确定规则 的匹配规则作为其自身的子规则,并将所有子规则按照AC算法生成AC自动机 的过程,并在确定所述匹配规则的子规则后,标识所述匹配规则的子规则;所述节点处理模块,用于生成节点规则表,所述节点规则表记录在所述 AC自动机中的终态节点处匹配的所有子规则标识、每个所述子规则对应的规 定连续重复次数和子规则长度,以供所述匹配模块在搜索时进行査找;所述匹配状态表生成模块,用于生成匹配状态表,所述匹配状态表中的一 行对应于所述规则集中的一个匹配规则,每行记录对应匹配规则包含的子规则 总数、最近匹配的子规则的顺序号、最近匹配的子规则的规定连续重复次数、 最近匹配的子规则的已连续重复次数和最近匹配的子规则的匹配位置,以供所 述匹配模块在搜索时进行査找。
3. 如权利要求2所述的匹配规则包含次数指示符的并行多模式匹配的系 统,其特征在于,所述在确定所述匹配规则的子规则后,标识所述匹配规则的 子规则进一步为标识所述匹配规则,使用所述子规则所属匹配规则的标识和所 述子规则在匹配规则中的顺序号标识所述子规则。
4. 如权利要求2所述的匹配规则包含次数指示符的并行多模式匹配的系 统,其特征在于,所述匹配模块进一步包括状态转移模块、参数获得模块、 匹配判断模块、重复判断模块、结果输出模块和搜索继续模块,所述状态转移模块,用于进行所述读取搜索对象,按AC算法应用所述AC 自动机进行搜索的过程,当转移到终态节点时,启动所述参数获得模块;所述参数获得模块,用于査找所述节点规则表以获得匹配的子规则标识、 所述子规则对应的规定连续重复次数和子规则长度,査找匹配状态表,获得所 述子规则所属匹配规则的子规则总数、最近匹配的子规则顺序号、最近匹配的 子规则的规定连续重复次数、最近匹配的子规则的已连续重复次数和最近匹配 的子规则的匹配位置;所述匹配判断模块,用于判断是否满足所述子规则的顺序号减去所述最近 匹配的子规则顺序号等于1并且所述最近匹配的子规则的已连续重复次数在 所述最近匹配的子规则的规定连续重复次数范围内,或者,所述子规则是所述 匹配规则的第一个子规则并且获得的最近匹配的子规则顺序号大于1,如果满 足,则将所述匹配状态表中所述匹配规则对应的最近匹配的子规则顺序号更新 为所述子规则的顺序号,最近匹配的子规则的规定连续重复次数更新为所述子 规则对应的规定连续重复次数,最近匹配的子规则的己连续重复次数更新为 1,最近匹配的子规则的匹配位置更新为所述子规则的匹配位置,启动所述结 果输出模块,否则,启动所述重复判断模块;所述重复判断模块,用于判断是否满足所述子规则的顺序号同所述最近匹 配的子规则顺序号相同,并且所述子规则的匹配位置减去所述最近匹配的子规 则的匹配位置等于所述子规则长度,如果满足,则将所述匹配状态表中所述匹 配规则对应的最近匹配的子规则的已连续重复次数加1,最近匹配的子规则的 匹配位置更新为所述子规则的匹配位置,启动所述结果输出模块,否则,启动 所述搜索继续模块;所述结果输出模块,用于根据所述子规则顺序号和所述子规则总数判断所 述子规则是否是所述匹配规则的最后一个子规则,并且判断所述匹配规则表中 所述匹配规则对应的最近匹配的子规则的己连续重复次数是否在最近匹配的 子规则的规定连续重复次数范围内,如果都为是,则所述搜索对象同所述匹配 规则匹配,输出匹配结果,在所述判断都完成后,启动所述搜索继续模块;所述搜索继续模块,用于判断在当前终态节点处是否还有匹配的子规则, 如果有,启动所述匹配判断模块,否则,在所述搜索对象还有未读取字符时, 继续读取所述搜索对象,启动所述状态转移模块。
5. —种匹配规则包含次数指示符的并行多模式匹配的方法,其特征在于, 包括步骤l,读取包含匹配规则的规则集,将所述规则集中包含次数指示符的 匹配规则从次数指示符处分割成所述匹配规则的子规则,所述子规则为确定规 则,所述次数指示符规定的次数为所述次数指示符前面相连的所述子规则对应 的规定连续重复次数,所述规则集中为确定规则的匹配规则作为其自身的子规 则,所述子规则对应的规定连续重复次数为1,并将所有子规则按照AC算法 生成AC自动机;步骤2,读取搜索对象,按AC算法应用所述AC自动机进行搜索,判断所 述搜索对象是否按子规则在所述匹配规则中的顺序和子规则对应的规定连续 重复次数匹配所述匹配规则的所有子规则,如果是,则所述搜索对象匹配所述 匹配规则,并输出匹配结果。
6. 如权利要求5所述的匹配规则包含次数指示符的并行多模式匹配的方 法,其特征在于,所述步骤l进一步包括,步骤61,在确定所述匹配规则的子规则后,标识所述匹配规则的子规则; 步骤62,在生成所述AC自动机后,生成节点规则表,记录在所述AC自动机中的终态节点处匹配的所有子规则标识、每个所述子规则对应的规定连续重复次数和子规则长度,以供在搜索时进行査找;步骤63,生成匹配状态表,所述匹配状态表中的一行对应于所述规则集中的一个匹配规则,每行记录对应匹配规则包含的子规则总数、最近匹配的子规则的顺序号、最近匹配的子规则的规定连续重复次数、最近匹配的子规则的已连续重复次数和最近匹配的子规则的匹配位置,以供在搜索时进行查找。
7. 如权利要求6所述的匹配规则包含次数指示符的并行多模式匹配的方 法,其特征在于,所述步骤61进一步为标识所述匹配规则,使用所述子规则 所属匹配规则的标识和所述子规则在匹配规则中的顺序号标识所述子规则。
8. 如权利要求6所述的匹配规则包含次数指示符的并行多模式匹配的方 法,其特征在于,所述步骤2进一步包括,步骤81,査找所述节点规则表以获得匹配的子规则标识、所述子规则对 应的规定连续重复次数和子规则长度,査找匹配状态表,获得所述子规则所属 匹配规则的子规则总数、最近匹配的子规则顺序号、最近匹配的子规则的规定 连续重复次数、最近匹配的子规则的已连续重复次数和最近匹配的子规则的匹 配位置;步骤82,判断是否满足所述子规则的顺序号减去所述最近匹配的子规则 顺序号等于1并且所述最近匹配的子规则的已连续重复次数在所述最近匹配 的子规则的规定连续重复次数范围内,或者,所述子规则是所述匹配规则的第 一个子规则并且获得的最近匹配的子规则顺序号大于l,如果满足,则将所述 匹配状态表中所述匹配规则对应的最近匹配的子规则顺序号更新为所述子规 则的顺序号,最近匹配的子规则的规定连续重复次数更新为所述子规则对应的 规定连续重复次数,最近匹配的子规则的已连续重复次数更新为1,最近匹配 的子规则的匹配位置更新为所述子规则的匹配位置,执行步骤84,否则,执 行步骤83;步骤83,判断是否满足所述子规则的顺序号同所述最近匹配的子规则顺 序号相同,并且所述子规则的匹配位置减去所述最近匹配的子规则的匹配位置 等于所述子规则长度,如果满足,则将所述匹配状态表中所述匹配规则对应的 最近匹配的子规则的己连续重复次数加1,最近匹配的子规则的匹配位置更新 为所述子规则的匹配位置,执行步骤84,否则,执行步骤85;步骤84,根据所述子规则的顺序号和所述子规则总数判断所述子规则是 否是所述匹配规则的最后一个子规则,并且判断所述匹配规则表中所述匹配规 则对应的最近匹配的子规则的已连续重复次数是否在最近匹配的子规则的规 定连续重复次数范围内,如果都为是,则所述搜索对象同所述匹配规则匹配,输出匹配结果,在所述判断都完成后,执行步骤85;步骤85,判断在当前终态节点处是否还有匹配的子规则,如果有,执行 步骤82,否则,在所述搜索对象还有未读取字符时,继续读取所述搜索对象, 执行步骤81。
全文摘要
本发明涉及匹配规则包含次数指示符的并行多模式匹配的系统和方法,系统包括生成模块,用于读取规则集,将规则集中包含次数指示符的匹配规则从次数指示符处分割成子规则,该子规则为确定规则,次数指示符规定的次数为其前面相连的子规则对应的规定连续重复次数,规则集中确定规则作为其自身的子规则,该子规则对应的规定连续重复次数为1,将所有子规则按照AC算法生成AC自动机;匹配模块,用于读取搜索对象,按AC算法进行搜索,判断搜索对象是否按子规则在匹配规则中的顺序和子规则对应的规定连续重复次数匹配所有子规则,如果是,则搜索对象匹配该匹配规则。从而,应用AC算法来处理指定子规则连续重复次数的并行多模式匹配。
文档编号H04L29/06GK101677318SQ20081022250
公开日2010年3月24日 申请日期2008年9月18日 优先权日2008年9月18日
发明者叶润国, 胡振宇 申请人:北京启明星辰信息技术股份有限公司;北京启明星辰信息安全技术有限公司