CN101677318A - 匹配规则包含次数指示符的并行多模式匹配的方法及系统 - Google Patents
匹配规则包含次数指示符的并行多模式匹配的方法及系统 Download PDFInfo
- Publication number
- CN101677318A CN101677318A CN200810222506A CN200810222506A CN101677318A CN 101677318 A CN101677318 A CN 101677318A CN 200810222506 A CN200810222506 A CN 200810222506A CN 200810222506 A CN200810222506 A CN 200810222506A CN 101677318 A CN101677318 A CN 101677318A
- Authority
- CN
- China
- Prior art keywords
- rule
- sub
- matched
- coupling
- repetition
- 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.)
- Granted
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及匹配规则包含次数指示符的并行多模式匹配的系统和方法,系统包括:生成模块,用于读取规则集,将规则集中包含次数指示符的匹配规则从次数指示符处分割成子规则,该子规则为确定规则,次数指示符规定的次数为其前面相连的子规则对应的规定连续重复次数,规则集中确定规则作为其自身的子规则,该子规则对应的规定连续重复次数为1,将所有子规则按照AC算法生成AC自动机;匹配模块,用于读取搜索对象,按AC算法进行搜索,判断搜索对象是否按子规则在匹配规则中的顺序和子规则对应的规定连续重复次数匹配所有子规则,如果是,则搜索对象匹配该匹配规则。从而,应用AC算法来处理指定子规则连续重复次数的并行多模式匹配。
Description
技术领域
本发明属于文本或网络内容处理技术领域,尤其涉及一种匹配规则包含次数指示符的并行多模式匹配的方法及系统。
背景技术
多模式匹配(Multiple Pattern String Matching)是计算机科学领域中的基本问题之一,用于快速判断某一数据块中是否包含规则集中的某一或某些规则。多模式匹配技术广泛应用于文本处理、网络内容分析、入侵检测、生物信息学、信息检索等领域。
解决并行多模式匹配问题的经典方法之一,是基于有限状态自动机的方法。该方法最初由Alfred V.Aho和Margaret J.Corasick于1975年提出,通常以发明者的名字简称为AC多模式匹配算法。AC算法的突出优点在于其具有相同的最坏和平均性能,可用于处理各种模式集合(例如:不等长、大规模),是一种高性能的多模式匹配方法。
对于各种确定性规则的模式匹配来说,AC算法(以及其变种)无疑是个非常优秀的算法,但却无法处理含有通配符的非确定性规则的匹配。
中国专利申请200810104416.2“一种并行多模式匹配的方法及系统”提供了一种应用AC算法来处理含有通配符的非确定规则的并行多模式匹配的方法。该发明公开了一种并行多模式匹配的系统,包括:
生成模块,用于读取包含匹配规则的规则集,将所述规则集中包含通配符的匹配规则从通配符处分割成所述匹配规则的子规则,所述子规则中不包含通配符,所述规则集中不包含通配符的匹配规则作为其自身的子规则,并将所有子规则按照AC算法生成AC自动机,并输出所述AC自动机;
匹配模块,用于读取搜索对象和所述AC自动机,按AC算法应用所述AC自动机进行搜索,判断所述搜索对象是否按子规则在所述匹配规则中的顺序匹配所述匹配规则的所有子规则,如果是,则所述搜索对象匹配所述匹配规则,并输出匹配结果。
在具体的搜索过程中,当用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,最近匹配的子规则的匹配位置更新为所述子规则的匹配位置,启动所述结果输出模块,否则,启动所述搜索继续模块;
所述结果输出模块,用于根据所述子规则顺序号和所述子规则总数判断所述子规则是否是所述匹配规则的最后一个子规则,并且判断所述匹配规则表中所述匹配规则对应的最近匹配的子规则的已连续重复次数是否在最近匹配的子规则的规定连续重复次数范围内,如果都为是,则所述搜索对象同所述匹配规则匹配,输出匹配结果,在所述判断都完成后,启动所述搜索继续模块;
所述搜索继续模块,用于判断在当前终态节点处是否还有匹配的子规则,如果有,启动所述匹配判断模块,否则,在所述搜索对象还有未读取字符时,继续读取所述搜索对象,启动所述状态转移模块。
本发明还公开了一种匹配规则包含次数指示符的并行多模式匹配的方法,包括:
步骤1,读取包含匹配规则的规则集,将所述规则集中包含次数指示符的匹配规则从次数指示符处分割成所述匹配规则的子规则,所述子规则为确定规则,所述次数指示符规定的次数为所述次数指示符前面相连的所述子规则对应的规定连续重复次数,所述规则集中为确定规则的匹配规则作为其自身的子规则,所述子规则对应的规定连续重复次数为1,并将所有子规则按照AC算法生成AC自动机;
步骤2,读取搜索对象,按AC算法应用所述AC自动机进行搜索,判断所述搜索对象是否按子规则在所述匹配规则中的顺序和子规则对应的规定连续重复次数匹配所述匹配规则的所有子规则,如果是,则所述搜索对象匹配所述匹配规则,并输出匹配结果。
所述步骤1进一步包括,
步骤61,在确定所述匹配规则的子规则后,标识所述匹配规则的子规则;
步骤62,在生成所述AC自动机后,生成节点规则表,记录在所述AC自动机中的终态节点处匹配的所有子规则标识、每个所述子规则对应的规定连续重复次数和子规则长度,以供在搜索时进行查找;
步骤63,生成匹配状态表,所述匹配状态表中的一行对应于所述规则集中的一个匹配规则,每行记录对应匹配规则包含的子规则总数、最近匹配的子规则的顺序号、最近匹配的子规则的规定连续重复次数、最近匹配的子规则的已连续重复次数和最近匹配的子规则的匹配位置,以供在搜索时进行查找。
所述步骤61进一步为标识所述匹配规则,使用所述子规则所属匹配规则的标识和所述子规则在匹配规则中的顺序号标识所述子规则。
所述步骤2进一步包括,
步骤81,查找所述节点规则表以获得匹配的子规则标识、所述子规则对应的规定连续重复次数和子规则长度,查找匹配状态表,获得所述子规则所属匹配规则的子规则总数、最近匹配的子规则顺序号、最近匹配的子规则的规定连续重复次数、最近匹配的子规则的已连续重复次数和最近匹配的子规则的匹配位置;
步骤82,判断是否满足所述子规则的顺序号减去所述最近匹配的子规则顺序号等于1并且所述最近匹配的子规则的已连续重复次数在所述最近匹配的子规则的规定连续重复次数范围内,或者,所述子规则是所述匹配规则的第一个子规则并且获得的最近匹配的子规则顺序号大于1,如果满足,则将所述匹配状态表中所述匹配规则对应的最近匹配的子规则顺序号更新为所述子规则的顺序号,最近匹配的子规则的规定连续重复次数更新为所述子规则对应的规定连续重复次数,最近匹配的子规则的已连续重复次数更新为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,读取包含匹配规则的规则集,将规则集中包含次数指示符的匹配规则从次数指示符处分割成该匹配规则的子规则,该子规则为确定规则,次数指示符规定的次数为该次数指示符前面相连的子规则对应的规定连续重复次数,规则集中为确定规则的匹配规则作为其自身的子规则,该子规则对应的规定连续重复次数为1,并将所有子规则按照AC算法生成AC自动机;对于为确定规则的匹配规则,由于其子规则是其自身,所以规则集中为确定规则的匹配规则可以不做替换直接保留。
步骤S202,读取搜索对象,按AC算法应用生成的AC自动机进行搜索,判断搜索对象是否按子规则在匹配规则中的顺序和子规则对应的规定连续重复次数匹配该匹配规则的所有子规则,如果是,则所述搜索对象匹配该匹配规则,并输出匹配结果。
生成模块101还用以生成匹配状态表和节点规则表。
匹配状态表用以记录匹配规则的子规则总数、最近匹配的子规则的顺序号、最近匹配的子规则的规定连续重复次数、最近匹配的子规则的已连续重复次数和最近匹配的子规则的匹配位置。
节点规则表用以记录在所述AC自动机中的终态节点处匹配的所有子规则标识、每个所述子规则对应的规定连续重复次数和子规则长度。
生成模块201包括,规则解析模块301、节点处理模块302和匹配状态表生成模块303,如图3所示。
规则解析模块301,用于逐条判断规则集中的匹配规则是否包含次数指示符,如果包含,则查找匹配规则中次数指示符的位置,在次数指示符位置处将匹配规则分割为子规则,该子规则为确定规则,如果不包含,并且匹配规则为确定规则,则该匹配规则作为其自身的子规则,将规则集中的匹配规则用该匹配规则的子规则替换,使规则集转换为仅包含确定规则的规则集,并用子规则所属的匹配规则的标识和该子规则在该匹配规则中的顺序号标识该子规则。
例如,一个匹配规则“334566(990000)<2,10>3467”,标识该匹配规则为23,该规则包含一个次数指示符“<2,10>”,说明子规则“990000”的连续重复次数最小是2,最大是10。如果次数指示符的第二项为空(如“<2,>”)则表示最大连续重复次数不限。该匹配规则被分割为三个子规则“334566”、“990000”和“3467”,子规则的顺序号分别是1、2和3。采用二维数组将两个子规则分别标识为(23,1)、(23,2)和(23,3)。
匹配状态表生成模块302,用于生成匹配状态表,该匹配状态表中的一行对应于规则集中的一个匹配规则,每行记录对应匹配规则包含的子规则总数、最近匹配的子规则的顺序号、最近匹配的子规则的匹配位置、最近匹配的子规则的已连续重复次数和最近匹配的子规则的规定连续重复次数,以供匹配模块102在搜索时查找。
例如,规则集中有N个匹配规则,建立一个N×5的二维表格,其中行号表示匹配规则的标识,第1列记录该匹配规则包含的子规则总数,第2列记录最近匹配的子规则的顺序号,第3列记录最近匹配的子规则的匹配位置,第4列记录最近匹配的子规则的已连续重复次数,第5列记录最近匹配的子规则的规定连续重复次数,并且每个匹配规则的最近匹配的子规则的顺序号、匹配位置、已连续重复次数以及规定连续重复次数均初始化为0。
子规则的匹配位置,为该子规则在搜索对象中匹配的字符串中最后一个字符在搜索对象中的位置。例如,子规则为“123”,搜索对象为“2312345”,则该子规则的匹配位置为5。
子规则的已连续重复次数,为子规则被连续匹配的次数。
子规则长度,为子规则包含的字符数量。
节点处理模块303,用于生成节点规则表,记录在所述AC自动机中的终态节点处匹配的所有子规则、每个子规则对应的规定连续重复次数和子规则长度,以供匹配模块102在搜索时查找。
具体实施方式为,对应于每个终态节点建立一个链表,链表中存有该终态节点对应的子规则标识、每个子规则对应的规定连续重复次数和子规则长度。其中的子规则标识为所述的二维数组,例如(23,2),表示第23条匹配规则的第2个子规则以该状态节点为终态节点。其中规定连续重复次数也为二维数组,例如<2,10>,表示连续重复次数最小是2,最大是10。如果次数指示符的第二项为空(如“<2,>”)则表示最大连续重复次数不限。
匹配模块102包括:状态转移模块401、参数获得模块402、匹配判断模块403、重复判断模块404、结果输出模块405和搜索继续模块406,如图4所示。
状态转移模块401,用于读取搜索对象,按AC算法应用AC自动机进行搜索,当转移到终态节点时,启动参数获得模块402。
参数获得模块402,用于查找节点规则表以获得匹配的子规则标识、该子规则对应的规定连续重复次数和子规则长度,查找匹配状态表,获得该子规则所属匹配规则的子规则总数、最近匹配的子规则顺序号、最近匹配的子规则的规定连续重复次数、最近匹配的子规则的已连续重复次数和最近匹配的子规则的匹配位置。
具体实施方式为:用一个整数P表示当前搜索位置,初始时P为开始位置0。用一个整数S表示AC自动机的当前状态,初始时S为初始状态0,每读取一个搜索对象的字符,位置P就增加1,同时在AC自动机中查找,确定下一状态,并修改S值为该状态。
匹配判断模块403,用于判断是否满足匹配的子规则的顺序号减去获得的最近匹配的子规则顺序号等于1并且获得的最近匹配的子规则的已连续重复次数在获得的最近匹配的子规则的规定连续重复次数范围内,或者,匹配的子规则是其所属匹配规则的第一个子规则并且获得的最近匹配的子规则顺序号大于1,如果满足,则将匹配状态表中该匹配规则对应的最近匹配的子规则顺序号更新为所述子规则的顺序号,最近匹配的子规则的规定连续重复次数更新为该子规则对应的规定连续重复次数,最近匹配的子规则的已连续重复次数更新为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并且获得的最近匹配的子规则的已连续重复次数在获得的最近匹配的子规则的规定连续重复次数范围内,或者,该子规则是所述匹配规则的第一个子规则并且获得的最近匹配的子规则顺序号大于1,如果满足,执行步骤S509,否则,执行步骤S508。
步骤S508,判断是否满足该子规则的顺序号同获得的最近匹配的子规则顺序号相同,并且该子规则的匹配位置减去获得的最近匹配的子规则的匹配位置等于该子规则长度,如果满足,则执行步骤S510,否则,执行步骤S512。
步骤S509,将所述匹配状态表中匹配规则对应的最近匹配的子规则顺序号更新为该子规则的顺序号,最近匹配的子规则的规定连续重复次数更新为该子规则对应的规定连续重复次数,最近匹配的子规则的已连续重复次数更新为1,最近匹配的子规则的匹配位置更新为该子规则的匹配位置,执行步骤S511。
步骤S510,将匹配状态表中匹配规则对应的最近匹配的子规则的已连续重复次数加1,最近匹配的子规则的匹配位置更新为该子规则的匹配位置,执行步骤S511。
步骤S511,根据该子规则的顺序号和获得的子规则总数判断该子规则是否是匹配规则的最后一个子规则,并且判断匹配规则表中匹配规则对应的最近匹配的子规则的已连续重复次数是否在最近匹配的子规则的规定连续重复次数范围内,如果都为是,则搜索对象同所述匹配规则匹配,输出匹配结果,在所述判断都完成后,执行步骤S512。
步骤S512,判断在当前终态节点处是否还有匹配的子规则,如果有,执行步骤S506,否则,在搜索对象还有未读取字符时,执行步骤S503。
本领域的技术人员在不脱离权利要求书确定的本发明的精神和范围的条件下,还可以对以上内容进行各种各样的修改。因此本发明的范围并不仅限于以上的说明,而是由权利要求书的范围来确定的。
Claims (8)
1.一种匹配规则包含次数指示符的并行多模式匹配的系统,其特征在于,包括:
生成模块,用于读取包含匹配规则的规则集,将所述规则集中包含次数指示符的匹配规则从次数指示符处分割成所述匹配规则的子规则,所述子规则为确定规则,所述次数指示符规定的次数为所述次数指示符前面相连的子规则对应的规定连续重复次数,所述规则集中为确定规则的匹配规则作为其自身的子规则,所述子规则对应的规定连续重复次数为1,并将所有子规则按照AC算法生成AC自动机;
匹配模块,用于读取搜索对象,按AC算法应用所述AC自动机进行搜索,判断所述搜索对象是否按子规则在所述匹配规则中的顺序和子规则对应的规定连续重复次数匹配所述匹配规则的所有子规则,如果是,则所述搜索对象匹配所述匹配规则,并输出匹配结果。
2.如权利要求1所述的匹配规则包含次数指示符的并行多模式匹配的系统,其特征在于,所述生成模块进一步包括规则解析模块、匹配状态表生成模块和节点处理模块,
所述规则解析模块,用于进行所述将所述规则集中包含次数指示符的匹配规则从次数指示符处分割成所述匹配规则的子规则,所述规则集中为确定规则的匹配规则作为其自身的子规则,并将所有子规则按照AC算法生成AC自动机的过程,并在确定所述匹配规则的子规则后,标识所述匹配规则的子规则;
所述节点处理模块,用于生成节点规则表,所述节点规则表记录在所述AC自动机中的终态节点处匹配的所有子规则标识、每个所述子规则对应的规定连续重复次数和子规则长度,以供所述匹配模块在搜索时进行查找;
所述匹配状态表生成模块,用于生成匹配状态表,所述匹配状态表中的一行对应于所述规则集中的一个匹配规则,每行记录对应匹配规则包含的子规则总数、最近匹配的子规则的顺序号、最近匹配的子规则的规定连续重复次数、最近匹配的子规则的已连续重复次数和最近匹配的子规则的匹配位置,以供所述匹配模块在搜索时进行查找。
3.如权利要求2所述的匹配规则包含次数指示符的并行多模式匹配的系统,其特征在于,所述在确定所述匹配规则的子规则后,标识所述匹配规则的子规则进一步为标识所述匹配规则,使用所述子规则所属匹配规则的标识和所述子规则在匹配规则中的顺序号标识所述子规则。
4.如权利要求2所述的匹配规则包含次数指示符的并行多模式匹配的系统,其特征在于,所述匹配模块进一步包括:状态转移模块、参数获得模块、匹配判断模块、重复判断模块、结果输出模块和搜索继续模块,
所述状态转移模块,用于进行所述读取搜索对象,按AC算法应用所述AC自动机进行搜索的过程,当转移到终态节点时,启动所述参数获得模块;
所述参数获得模块,用于查找所述节点规则表以获得匹配的子规则标识、所述子规则对应的规定连续重复次数和子规则长度,查找匹配状态表,获得所述子规则所属匹配规则的子规则总数、最近匹配的子规则顺序号、最近匹配的子规则的规定连续重复次数、最近匹配的子规则的已连续重复次数和最近匹配的子规则的匹配位置;
所述匹配判断模块,用于判断是否满足所述子规则的顺序号减去所述最近匹配的子规则顺序号等于1并且所述最近匹配的子规则的已连续重复次数在所述最近匹配的子规则的规定连续重复次数范围内,或者,所述子规则是所述匹配规则的第一个子规则并且获得的最近匹配的子规则顺序号大于1,如果满足,则将所述匹配状态表中所述匹配规则对应的最近匹配的子规则顺序号更新为所述子规则的顺序号,最近匹配的子规则的规定连续重复次数更新为所述子规则对应的规定连续重复次数,最近匹配的子规则的已连续重复次数更新为1,最近匹配的子规则的匹配位置更新为所述子规则的匹配位置,启动所述结果输出模块,否则,启动所述重复判断模块;
所述重复判断模块,用于判断是否满足所述子规则的顺序号同所述最近匹配的子规则顺序号相同,并且所述子规则的匹配位置减去所述最近匹配的子规则的匹配位置等于所述子规则长度,如果满足,则将所述匹配状态表中所述匹配规则对应的最近匹配的子规则的已连续重复次数加1,最近匹配的子规则的匹配位置更新为所述子规则的匹配位置,启动所述结果输出模块,否则,启动所述搜索继续模块;
所述结果输出模块,用于根据所述子规则顺序号和所述子规则总数判断所述子规则是否是所述匹配规则的最后一个子规则,并且判断所述匹配规则表中所述匹配规则对应的最近匹配的子规则的已连续重复次数是否在最近匹配的子规则的规定连续重复次数范围内,如果都为是,则所述搜索对象同所述匹配规则匹配,输出匹配结果,在所述判断都完成后,启动所述搜索继续模块;
所述搜索继续模块,用于判断在当前终态节点处是否还有匹配的子规则,如果有,启动所述匹配判断模块,否则,在所述搜索对象还有未读取字符时,继续读取所述搜索对象,启动所述状态转移模块。
5.一种匹配规则包含次数指示符的并行多模式匹配的方法,其特征在于,包括:
步骤1,读取包含匹配规则的规则集,将所述规则集中包含次数指示符的匹配规则从次数指示符处分割成所述匹配规则的子规则,所述子规则为确定规则,所述次数指示符规定的次数为所述次数指示符前面相连的所述子规则对应的规定连续重复次数,所述规则集中为确定规则的匹配规则作为其自身的子规则,所述子规则对应的规定连续重复次数为1,并将所有子规则按照AC算法生成AC自动机;
步骤2,读取搜索对象,按AC算法应用所述AC自动机进行搜索,判断所述搜索对象是否按子规则在所述匹配规则中的顺序和子规则对应的规定连续重复次数匹配所述匹配规则的所有子规则,如果是,则所述搜索对象匹配所述匹配规则,并输出匹配结果。
6.如权利要求5所述的匹配规则包含次数指示符的并行多模式匹配的方法,其特征在于,所述步骤1进一步包括,
步骤61,在确定所述匹配规则的子规则后,标识所述匹配规则的子规则;
步骤62,在生成所述AC自动机后,生成节点规则表,记录在所述AC自动机中的终态节点处匹配的所有子规则标识、每个所述子规则对应的规定连续重复次数和子规则长度,以供在搜索时进行查找;
步骤63,生成匹配状态表,所述匹配状态表中的一行对应于所述规则集中的一个匹配规则,每行记录对应匹配规则包含的子规则总数、最近匹配的子规则的顺序号、最近匹配的子规则的规定连续重复次数、最近匹配的子规则的已连续重复次数和最近匹配的子规则的匹配位置,以供在搜索时进行查找。
7.如权利要求6所述的匹配规则包含次数指示符的并行多模式匹配的方法,其特征在于,所述步骤61进一步为标识所述匹配规则,使用所述子规则所属匹配规则的标识和所述子规则在匹配规则中的顺序号标识所述子规则。
8.如权利要求6所述的匹配规则包含次数指示符的并行多模式匹配的方法,其特征在于,所述步骤2进一步包括,
步骤81,查找所述节点规则表以获得匹配的子规则标识、所述子规则对应的规定连续重复次数和子规则长度,查找匹配状态表,获得所述子规则所属匹配规则的子规则总数、最近匹配的子规则顺序号、最近匹配的子规则的规定连续重复次数、最近匹配的子规则的已连续重复次数和最近匹配的子规则的匹配位置;
步骤82,判断是否满足所述子规则的顺序号减去所述最近匹配的子规则顺序号等于1并且所述最近匹配的子规则的已连续重复次数在所述最近匹配的子规则的规定连续重复次数范围内,或者,所述子规则是所述匹配规则的第一个子规则并且获得的最近匹配的子规则顺序号大于1,如果满足,则将所述匹配状态表中所述匹配规则对应的最近匹配的子规则顺序号更新为所述子规则的顺序号,最近匹配的子规则的规定连续重复次数更新为所述子规则对应的规定连续重复次数,最近匹配的子规则的已连续重复次数更新为1,最近匹配的子规则的匹配位置更新为所述子规则的匹配位置,执行步骤84,否则,执行步骤83;
步骤83,判断是否满足所述子规则的顺序号同所述最近匹配的子规则顺序号相同,并且所述子规则的匹配位置减去所述最近匹配的子规则的匹配位置等于所述子规则长度,如果满足,则将所述匹配状态表中所述匹配规则对应的最近匹配的子规则的已连续重复次数加1,最近匹配的子规则的匹配位置更新为所述子规则的匹配位置,执行步骤84,否则,执行步骤85;
步骤84,根据所述子规则的顺序号和所述子规则总数判断所述子规则是否是所述匹配规则的最后一个子规则,并且判断所述匹配规则表中所述匹配规则对应的最近匹配的子规则的已连续重复次数是否在最近匹配的子规则的规定连续重复次数范围内,如果都为是,则所述搜索对象同所述匹配规则匹配,输出匹配结果,在所述判断都完成后,执行步骤85;
步骤85,判断在当前终态节点处是否还有匹配的子规则,如果有,执行步骤82,否则,在所述搜索对象还有未读取字符时,继续读取所述搜索对象,执行步骤81。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008102225061A CN101677318B (zh) | 2008-09-18 | 2008-09-18 | 匹配规则包含次数指示符的并行多模式匹配的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008102225061A CN101677318B (zh) | 2008-09-18 | 2008-09-18 | 匹配规则包含次数指示符的并行多模式匹配的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101677318A true CN101677318A (zh) | 2010-03-24 |
CN101677318B CN101677318B (zh) | 2012-05-23 |
Family
ID=42029737
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008102225061A Expired - Fee Related CN101677318B (zh) | 2008-09-18 | 2008-09-18 | 匹配规则包含次数指示符的并行多模式匹配的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101677318B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105740400A (zh) * | 2016-01-27 | 2016-07-06 | 北京航空航天大学 | 动态调整多模匹配自动机的方法和装置 |
CN106067039A (zh) * | 2016-05-30 | 2016-11-02 | 桂林电子科技大学 | 基于决策树剪枝的模式匹配方法 |
CN110855676A (zh) * | 2019-11-15 | 2020-02-28 | 腾讯科技(深圳)有限公司 | 网络攻击的处理方法、装置及存储介质 |
CN111046938A (zh) * | 2019-12-06 | 2020-04-21 | 邑客得(上海)信息技术有限公司 | 基于字符串多模式匹配的网络流量分类识别方法和设备 |
CN111104375A (zh) * | 2019-11-22 | 2020-05-05 | 泰康保险集团股份有限公司 | 核保规则编辑方法、系统、设备及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1253817C (zh) * | 2002-08-23 | 2006-04-26 | 华为技术有限公司 | 一种实现长字符串前缀匹配的方法 |
CN101154228A (zh) * | 2006-09-27 | 2008-04-02 | 西门子公司 | 一种分段模式匹配方法及其装置 |
CN101183391A (zh) * | 2007-12-20 | 2008-05-21 | 四川长虹电器股份有限公司 | Css选择子规则匹配方法 |
-
2008
- 2008-09-18 CN CN2008102225061A patent/CN101677318B/zh not_active Expired - Fee Related
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105740400A (zh) * | 2016-01-27 | 2016-07-06 | 北京航空航天大学 | 动态调整多模匹配自动机的方法和装置 |
CN105740400B (zh) * | 2016-01-27 | 2019-08-06 | 北京航空航天大学 | 动态调整多模匹配自动机的方法和装置 |
CN106067039A (zh) * | 2016-05-30 | 2016-11-02 | 桂林电子科技大学 | 基于决策树剪枝的模式匹配方法 |
CN106067039B (zh) * | 2016-05-30 | 2019-01-29 | 桂林电子科技大学 | 基于决策树剪枝的模式匹配方法 |
CN110855676A (zh) * | 2019-11-15 | 2020-02-28 | 腾讯科技(深圳)有限公司 | 网络攻击的处理方法、装置及存储介质 |
CN111104375A (zh) * | 2019-11-22 | 2020-05-05 | 泰康保险集团股份有限公司 | 核保规则编辑方法、系统、设备及存储介质 |
CN111104375B (zh) * | 2019-11-22 | 2023-06-09 | 泰康保险集团股份有限公司 | 核保规则编辑方法、系统、设备及存储介质 |
CN111046938A (zh) * | 2019-12-06 | 2020-04-21 | 邑客得(上海)信息技术有限公司 | 基于字符串多模式匹配的网络流量分类识别方法和设备 |
Also Published As
Publication number | Publication date |
---|---|
CN101677318B (zh) | 2012-05-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101286988B (zh) | 一种并行多模式匹配的方法及系统 | |
CN101464905B (zh) | 一种网页信息抽取的系统及方法 | |
CN102722709B (zh) | 一种垃圾图片识别方法和装置 | |
TW200900958A (en) | Link spam detection using smooth classification function | |
JP5796494B2 (ja) | 情報処理装置、情報処理方法、及びプログラム | |
CN101677318B (zh) | 匹配规则包含次数指示符的并行多模式匹配的方法及系统 | |
CN103631791B (zh) | 信息聚合归类的显示方法及系统 | |
Ferrara et al. | Automatic wrapper adaptation by tree edit distance matching | |
CN101377816B (zh) | 匹配规则包含位移指示符的并行多模式匹配的方法及系统 | |
CN101388044A (zh) | 匹配规则包含或运算符的并行多模式匹配的方法及系统 | |
CN113360803A (zh) | 基于用户行为的数据缓存方法、装置、设备及存储介质 | |
CN101517972B (zh) | 无线装置集合的基数的估计 | |
CN110263021B (zh) | 一种基于个性化标签体系的主题库生成方法 | |
CN100361128C (zh) | 一种用于文本或网络内容分析的多关键词匹配方法 | |
CN102663108A (zh) | 基于复杂网络模型并行化标签传播算法的药物社团发现方法 | |
CN112084776B (zh) | 相似文章的检测方法、装置、服务器和计算机存储介质 | |
CN101441664A (zh) | 匹配规则包含可选字符的并行多模式匹配的方法及系统 | |
KR100907709B1 (ko) | 블록 그룹핑을 이용한 정보 추출 장치 및 그 방법 | |
CN107463676A (zh) | 文本数据存储方法及装置 | |
Tohalino et al. | Using citation networks to evaluate the impact of text length on the identification of relevant concepts | |
US7840583B2 (en) | Search device and recording medium | |
JP5238105B2 (ja) | プログラム、及びデータ抽出方法 | |
Chen et al. | Automatic wrapper generation for semi-structures biological data based on table structure identification | |
JP2011008811A (ja) | プログラム、及びデータ抽出方法 | |
JP2012014412A (ja) | データ抽出装置及び方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120523 Termination date: 20170918 |