CN101377816A - 匹配规则包含位移指示符的并行多模式匹配的方法及系统 - Google Patents
匹配规则包含位移指示符的并行多模式匹配的方法及系统 Download PDFInfo
- Publication number
- CN101377816A CN101377816A CNA2008101179456A CN200810117945A CN101377816A CN 101377816 A CN101377816 A CN 101377816A CN A2008101179456 A CNA2008101179456 A CN A2008101179456A CN 200810117945 A CN200810117945 A CN 200810117945A CN 101377816 A CN101377816 A CN 101377816A
- Authority
- CN
- China
- Prior art keywords
- rule
- sub
- matched
- displacement
- coupling
- 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
- Machine Translation (AREA)
Abstract
本发明涉及匹配规则包含位移指示符的并行多模式匹配的系统及方法,系统包括:生成模块,用于读取包含匹配规则的规则集,将规则集中包含位移指示符的匹配规则从位移指示符处分割成子规则,该子规则为确定规则,连接于位移指示符后的子规则对应的位移量为该位移指示符规定的位移量,为确定规则的匹配规则为其自身的子规则,将所有子规则按照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{2,10}990000”(其中的位移指示符{2,10}表示,在子模式“334566”和“990000”之间的位移量是2至10个字符),则上述发明则无法处理。
发明内容
为解决上述问题,本发明提供了一种匹配规则包含位移指示符的并行多模式匹配的方法及系统,从而能够应用AC算法对包含有位移指示符的匹配规则进行匹配。
本发明公开了一种匹配规则包含位移指示符的并行多模式匹配的系统,包括:
生成模块,用于读取包含匹配规则的规则集,将所述规则集中包含位移指示符的匹配规则从位移指示符处分割成所述匹配规则的子规则,每个所述子规则为确定规则,连接于所述位移指示符后的子规则对应的位移量为所述位移指示符规定的位移量,所述规则集中为确定规则的匹配规则作为其自身的子规则,并将所有子规则按照AC算法生成AC自动机;
匹配模块,用于读取搜索对象,按AC算法应用所述AC自动机进行搜索,判断所述搜索对象是否按子规则在所述匹配规则中的顺序匹配所述匹配规则的所有子规则,并且对于连接于位移指示符后的子规则按所述子规则对应的位移量匹配所述子规则,如果是,则所述搜索对象匹配所述匹配规则,并输出匹配结果。
所述生成模块进一步包括规则解析模块、匹配状态表生成模块和节点处理模块,
所述规则解析模块,用于进行所述将所述规则集中包含位移指示符的匹配规则从位移指示符处分割成所述匹配规则的子规则,所述规则集中为确定规则的匹配规则作为其自身的子规则,并将所有子规则按照AC算法生成AC自动机的过程,并在确定所述匹配规则的子规则后,标识所述匹配规则的子规则;
所述节点处理模块,用于生成节点规则表,所述节点规则表记录在所述AC自动机中的终态节点处匹配的所有子规则标识和所述连接于位移指示符后的子规则对应的位移量,以供所述匹配模块在搜索时进行查找;
所述匹配状态表生成模块,用于生成匹配状态表,所述匹配状态表中的一行对应于所述规则集中的一个匹配规则,每行记录对应匹配规则包含的子规则总数、最近匹配的子规则的顺序号和最近匹配的子规则的匹配位置,以供所述匹配模块在搜索时进行查找。
所述在确定所述匹配规则的子规则后,标识所述匹配规则的子规则进一步为标识所述匹配规则,使用所述子规则所属匹配规则的标识和所述子规则在匹配规则中的顺序号标识所述子规则。
匹配规则的第一个子规则的顺序号为1,
所述节点处理模块,还用于在终态节点处匹配的子规则为匹配规则的第一个子规则时,将所述子规则对应的位移量记录为0,并记录所述所有子规则的字符数;
所述匹配状态表生成模块,还用于将所述匹配状态表中的最近匹配的子规则的顺序号和最近匹配的子规则的匹配位置初始化为0;
所述匹配模块进一步包括
状态转移模块,用于进行所述读取搜索对象,按AC算法应用所述AC自动机进行搜索的过程;
处理模块,用于查找所述节点规则表,获得当前终态节点匹配的子规则的标识、所述子规则对应的位移量和所述子规则的字符数,按所述子规则标识查找所述匹配状态表,获得所述子规则所属匹配规则的子规则总数、最近匹配的子规则顺序号和最近匹配的子规则的匹配位置,比较所述子规则顺序号和所述最近匹配的子规则顺序号,所述子规则匹配位置和所述最近匹配的子规则匹配位置,如果所述子规则顺序号同所述最近匹配的子规则顺序号的差值等于1,并且所述子规则的匹配位置同所述最近匹配的子规则的匹配位置的差值减去所述子规则的字符数符合所述子规则对应的位移量,则根据所述子规则顺序号和所述子规则总数判断所述子规则是否是最后一个子规则,如果是,则所述搜索对象同所述匹配规则匹配,如果不是,则更新匹配状态表中所述最近匹配子规则顺序号为所述子规则的顺序号,所述最近匹配子规则的匹配位置为所述子规则的匹配位置。
本发明还公开了一种匹配规则包含位移指示符的并行多模式匹配的方法,包括:
步骤1,读取包含匹配规则的规则集,将所述规则集中包含位移指示符的匹配规则从位移指示符处分割成所述匹配规则的子规则,每个所述子规则为确定规则,连接于所述位移指示符后的子规则对应的位移量为所述位移指示符规定的位移量,所述规则集中为确定规则的匹配规则作为其自身的子规则,并将所有子规则按照AC算法生成AC自动机;
步骤2,读取搜索对象,按AC算法应用所述AC自动机进行搜索,判断所述搜索对象是否按子规则在所述匹配规则中的顺序匹配所述匹配规则的所有子规则,并且对于连接于位移指示符后的子规则按所述子规则对应的位移量匹配所述子规则,如果是,则所述搜索对象匹配所述匹配规则,并输出匹配结果。
所述步骤1进一步包括,
步骤61,在确定所述匹配规则的子规则后,标识所述匹配规则的子规则;
步骤62,在生成所述AC自动机后,生成节点规则表,记录在所述AC自动机中的终态节点处匹配的所有子规则标识和所述连接于位移指示符后的子规则对应的位移量,以供在搜索时进行查找;
步骤63,生成匹配状态表,所述匹配状态表中的一行对应于所述规则集中的一个匹配规则,每行记录对应匹配规则包含的子规则总数、最近匹配的子规则的顺序号和最近匹配的子规则的匹配位置,以供在搜索时进行查找。
所述步骤61进一步为标识所述匹配规则,使用所述子规则所属匹配规则的标识和所述子规则在匹配规则中的顺序号标识所述子规则。
匹配规则的第一个子规则的顺序号为1,
所述步骤62,还包括在终态节点处匹配的子规则为匹配规则的第一个子规则时,将所述子规则对应的位移量记录为0,并记录所述所有子规则的字符数;
所述步骤63,还包括将所述匹配状态表中的最近匹配的子规则的顺序号和最近匹配的子规则的匹配位置初始化为0;
所述步骤2进一步包括,
步骤81,查找所述节点规则表以获得匹配的子规则标识、所述子规则对应的位移量和所述子规则的字符数,查找匹配状态表,获得所述子规则所属匹配规则的子规则总数、最近匹配的子规则顺序号和最近匹配的子规则的匹配位置;
步骤82,判断所述子规则顺序号同所述最近匹配的子规则顺序号的差值是否等于1,并且所述子规则的匹配位置同所述最近匹配的子规则的匹配位置的差值减去所述子规则的字符数是否符合所述子规则对应的位移量,如果是,则执行步骤83;
步骤83,根据所述子规则顺序号和所述子规则总数判断所述子规则是否是最后一个子规则,如果是,则所述搜索对象同所述匹配规则匹配,如果不是,则更新匹配状态表中所述最近匹配子规则顺序号为所述子规则的顺序号,所述最近匹配子规则的匹配位置为所述子规则的匹配位置。
本发明的有益效果在于,通过将含有位移指示符的匹配规则在位移指示符处分割成子规则,使得AC算法可以用于包含位移指示符的匹配规则,进而实现对含有位移指示符的匹配规则的并行多模式匹配。
附图说明
图1是本发明的系统结构示意图;
图2是本发明的方法流程图;
图3是本发明的自动机生成模块结构示意图;
图4是本发明的匹配模块结构示意图;
图5是本发明方法具体实施例的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
本发明系统,包括生成模块101和匹配模块102组成,如图1所示。
生成模块101,用于读取包含匹配规则的规则集,将规则集中包含位移指示符的匹配规则从位移指示符处分割成该匹配规则的子规则,每个子规则为确定规则,连接于匹配规则包含的位移指示符后的子规则对应的位移量为该位移指示符规定的位移量,规则集中为确定规则的匹配规则作为其自身的子规则,将规则集中匹配规则用该匹配规则的子规则替换,从而使替换后的规则集中包含的匹配规则都为确定规则,按照AC算法生成对应于替换后的规则集的AC自动机。
对于为确定规则的匹配规则,由于其子规则是其自身,所以规则集中为确定规则的匹配规则可以不做替换直接保留。
所述确定规则,是规则中每个字符都已知,不包含不明确的字符,如通配符或位移指示符的规则。
匹配模块102,用于读取搜索对象,按AC算法应用所述AC自动机进行搜索,判断搜索对象是否按子规则在匹配规则中的顺序匹配该匹配规则的所有子规则,并且对于连接于位移指示符后的子规则按该子规则对应的位移量匹配该子规则,,如果是,则搜索对象匹配该匹配规则,并输出匹配结果。
本发明的方法如图2所示,包括:
步骤S201,读取包含匹配规则的规则集,将规则集中包含位移指示符的匹配规则从位移指示符处分割成所述匹配规则的子规则,每个子规则为确定规则,连接于位移指示符后的子规则对应的位移量为该位移指示符规定的位移量,规则集中为确定规则的匹配规则作为其自身的子规则,将规则集中匹配规则用该匹配规则的子规则替换,从而使替换后的规则集中包含的匹配规则都为确定规则,按照AC算法生成对应于替换后的规则集的AC自动机,并输出AC自动机。
对于为确定规则的匹配规则,由于其子规则是其自身,所以规则集中为确定规则的匹配规则可以不做替换直接保留。
步骤S202,判断所述搜索对象是否按子规则在匹配规则中的顺序匹配该匹配规则的所有子规则,并且对于连接于位移指示符后的子规则按该子规则对应的位移量匹配该子规则,如果是,则搜索对象匹配该匹配规则,并输出匹配结果。
生成模块101还用以生成匹配状态表和节点规则表。
匹配状态表用以记录匹配规则的子规则总数、最近匹配的子规则的顺序号和最近匹配的子规则的匹配位置,节点规则表用以记录在AC自动机的终态节点处匹配的所有子规则、每个子规则对应的位移量和子规则的字符数。
生成模块101包括,规则解析模块301、匹配状态表生成模块302、和节点处理模块303,如图3所示。
规则解析模块301,用于逐条判断规则集中的匹配规则是否包含位移指示符,如果包含,则查找匹配规则中位移指示符的位置,在位移指示符位置处将匹配规则分割为子规则,该子规则为确定规则;如果不包含并且匹配规则为确定规则,则所述匹配规则作为其自身的子规则,将规则集中的匹配规则用该匹配规则的子规则替换,使规则集转换为仅包含确定规则的规则集,并用子规则所属的匹配规则的标识和该子规则在该匹配规则中的顺序号标识该子规则。匹配规则的第一个子规则的顺序号为1。
例如,一个匹配规则为334566{2,10}990000,标识该匹配规则为23,该规则包含一个位移指示符为{2,10},说明位移指示符规定的子规则990000与子规则334566的位移量最小是2,最大是10。如果位移指示符的第二项为空(如{2,})则表示最大位移不限。该规则被分割为两个子规则“334566”和“990000”,子规则的顺序号分别是1和2。采用二维数组将两个子规则分别标识为(23,1)和(23,2)。又如,一个不含通配符的匹配规则“323457789”标识为24,则该匹配规则的子规则标识为(24,1)。
匹配状态表生成模块302,用于生成匹配状态表。匹配状态表中的一行对应于规则集中的一个匹配规则,每行记录对应匹配规则包含的子规则总数、最近匹配的子规则的顺序号和最近匹配的子规则的匹配位置,以供匹配模块102在获得当前匹配的子规则标识和当前搜索的位置后,依据该匹配的子规则标识查找匹配状态表。其中,最近匹配的子规则为在当前匹配前最后一次匹配的子规则。
例如,规则集中有N个匹配规则,建立一个N×3的二维表格,其中行号表示匹配规则的标识,第1列表示该匹配规则包含的子规则总数,第2列表示最近匹配的子规则的顺序号,第3列表示最近匹配的子规则的匹配位置,并且每个匹配规则的最近匹配的子规则的顺序号和最近匹配的子规则的匹配位置均初始化为0。
子规则的匹配位置,为该子规则在搜索对象中匹配的字符串中最后一个字符在搜索对象中的位置。例如,子规则为“123”,搜索对象为“2312345”,则该子规则的匹配位置为5。
节点处理模块303,用于生成节点规则表,记录在AC自动机中的终态节点处匹配的所有子规则和每个子规则对应的位移量和该子规则的字符数,子规则对应的位移量为该子规则与该子规则所属匹配规则中的前一子规则的位移量,匹配规则的第一个子规则对应的位移量为0。
具体实施方式为,对应于每个终态节点建立一个链表,链表中存有该终态节点对应的子规则标识、每个子规则对应的位移量和该子规则的字符数。其中的子规则标识为所述的二维数组,例如(23,2),表示第23条匹配规则的第2个子规则以该状态节点为终态节点。其中,子规则对应的位移量也为二维数组,例如{2,10},表示该子规则与该子规则所属匹配规则中的前一子规则的位移量最小是2,最大是10。如果位移指示符的第二项为空(如“{2,}”)则表示最大位移不限。
匹配模块102包括,状态转移模块401和处理模块402,如图4所示。
状态转移模块401,用于应用AC自动机,根据读取的搜索对象的字符,按AC算法进行搜索。具体实施方式为:用一个整数P表示当前搜索位置,初始时P为开始位置0。用一个整数S表示AC自动机的当前状态,初始时S为初始状态0,每读取一个搜索对象的字符,位置P就增加1,同时在AC自动机中查找,确定下一状态,并修改S值为该状态。
处理模块402,用于在当前状态节点为终态节点时,查找节点规则表以获得当前终态节点匹配的子规则标识、子规则对应的位移量和该子规则的字符数,当前的搜索位置为当前终态节点匹配的子规则的匹配位置,按子规则标识查找匹配状态表,获得该子规则所属匹配规则的子规则总数、最近匹配的子规则顺序号和最近匹配的子规则的匹配位置,比较该子规则顺序号和获得的最近匹配的子规则顺序号,比较子规则的匹配位置与最近匹配的子规则的匹配位置,如果该子规则顺序号同最近匹配的子规则顺序号的差值等于1,并且子规则的匹配位置同获得的最近匹配的子规则的匹配位置的差值减去该子规则的字符数符合该子规则对应的位移量,则根据该子规则顺序号和获得的子规则总数判断该子规则是否是最后一个子规则,如果是,则搜索对象同该子规则所属匹配规则匹配,如果不是,则更新匹配状态表中最近匹配子规则顺序号为该子规则的顺序号,最近匹配子规则的匹配位置为该子规则的匹配位置。
具体实施方式如下。
在当前终态节点的链表中逐一查找每个子规则,对于每个子规则,根据其标识确定其所属的匹配规则,查找匹配状态表获得该匹配规则的子规则总数、最近匹配的子规则的顺序号以及最近匹配的子规则匹配位置。
判断链表中查找的子规则的顺序号是否比匹配状态表中最近匹配子规则的顺序号大1,并且子规则的匹配位置与最近匹配的子规则的匹配位置的差值减去该子规则字符数是否符合该子规则对应的位移量,如果是,则根据子规则总数和该子规则的顺序号判断该子规则是否是最后一个子规则,如果是最后一个子规则,则搜索对象匹配该子规则所属的匹配规则,输出该匹配规则;如果不是最后一个子规则,并且链表中查找的子规则的顺序号比匹配状态表中最近匹配子规则的顺序号大1,并且所述子规则的匹配位置与匹配状态表中最近匹配的子规则的匹配位置差值减去该子规则字符数符合该子规则对应的位移量,则更新匹配状态表中记录的最近匹配子规则为该子规则的顺序号,最近匹配子规则的匹配位置为该子规则的匹配位置。
将该终态节点对应的所有子规则按上述方法处理完后,读取下一个字符,将搜索位置加1,按AC算法搜索。
本发明的方法的具体实施例如图5所示。
步骤S501,读取规则集。
步骤S502,标识所述规则集的匹配规则,判断规则集的匹配规则中是否包含位移指示符,如果包含,在位移指示符处将匹配规则划分成为确定规则的子规则,如果不包含并且匹配规则为确定规则,则所述匹配规则作为其自身的子规则,然后将所有子规则按AC算法生成AC自动机,并生成节点规则表和匹配状态表。
节点规则表,记录在所述AC自动机中的终态节点处匹配的所有子规则、子规则对应的位移量和该子规则的字符数,子规则用其所属匹配规则的标识和该子规则在匹配规则中的顺序号标识,包含位移指示符的匹配规则中连接于位移指示符后的子规则对应的位移量为位移指示符规定的位移量,匹配规则中第一个子规则对应的位移量为0。
匹配状态表中的每一行对应于一个匹配规则,记录该匹配规则的子规则总数、最近匹配的子规则的顺序号和最近匹配的子规则的匹配位置,每个匹配规则的最近匹配的子规则的顺序号和最近匹配的子规则的匹配位置初始化为0。
子规则的匹配位置,为该子规则在搜索对象中匹配的字符串中最后一个字符在搜索对象中的位置。
步骤S503,读取搜索对象。
步骤S504,按AC算法转移状态。
步骤S505,判断状态节点是否为终态节点,如果是,执行步骤S506,否则,执行步骤S503。
步骤S506,查找节点规则表,获得该终态节点匹配的子规则的标识、子规则对应的位移量和该子规则的字符数。
步骤S507,按子规则标识中的所属匹配规则的标识查找匹配状态表,获得该子规则所属匹配规则对应的子规则总数、最近匹配子规则的顺序号和最近匹配的子规则的匹配位置,判断该子规则的顺序号是否比所属匹配规则对应的最近匹配子规则的顺序号大1,并且该子规则的匹配位置与最近匹配的子规则的匹配位置的差值减去该子规则字符数是否符合该子规则对应的位移量,如果是,执行步骤S508,否则执行步骤S510。
步骤S508,同所属匹配规则的子规则总数比较,判断该子规则是否是最后一个子规则,如果是,输出匹配结果,执行步骤S510,否则,执行步骤S509。
步骤S509,更新匹配状态表中匹配规则对应的最近匹配的子规则的顺序号为该子规则的顺序号,最近匹配的子规则匹配位置为该子规则匹配位置。
步骤S510,判断该终态节点处是否还有匹配的子规则,如果有,执行步骤S506,否则,执行步骤S503。
执行上述流程,直到搜索对象被读取完为止。
本领域的技术人员在不脱离权利要求书确定的本发明的精神和范围的条件下,还可以对以上内容进行各种各样的修改。因此本发明的范围并不仅限于以上的说明,而是由权利要求书的范围来确定的。
Claims (8)
1.一种匹配规则包含位移指示符的并行多模式匹配的系统,其特征在于,包括:
生成模块,用于读取包含匹配规则的规则集,将所述规则集中包含位移指示符的匹配规则从位移指示符处分割成所述匹配规则的子规则,每个所述子规则为确定规则,连接于所述位移指示符后的子规则对应的位移量为所述位移指示符规定的位移量,所述规则集中为确定规则的匹配规则作为其自身的子规则,并将所有子规则按照AC算法生成AC自动机;
匹配模块,用于读取搜索对象,按AC算法应用所述AC自动机进行搜索,判断所述搜索对象是否按子规则在所述匹配规则中的顺序匹配所述匹配规则的所有子规则,并且对于连接于位移指示符后的子规则按所述子规则对应的位移量匹配所述子规则,如果是,则所述搜索对象匹配所述匹配规则,并输出匹配结果。
2.如权利要求1所述的匹配规则包含位移指示符的并行多模式匹配的系统,其特征在于,所述生成模块进一步包括规则解析模块、匹配状态表生成模块和节点处理模块,
所述规则解析模块,用于进行所述将所述规则集中包含位移指示符的匹配规则从位移指示符处分割成所述匹配规则的子规则,所述规则集中为确定规则的匹配规则作为其自身的子规则,并将所有子规则按照AC算法生成AC自动机的过程,并在确定所述匹配规则的子规则后,标识所述匹配规则的子规则;
所述节点处理模块,用于生成节点规则表,所述节点规则表记录在所述AC自动机中的终态节点处匹配的所有子规则标识和所述连接于位移指示符后的子规则对应的位移量,以供所述匹配模块在搜索时进行查找;
所述匹配状态表生成模块,用于生成匹配状态表,所述匹配状态表中的一行对应于所述规则集中的一个匹配规则,每行记录对应匹配规则包含的子规则总数、最近匹配的子规则的顺序号和最近匹配的子规则的匹配位置,以供所述匹配模块在搜索时进行查找。
3.如权利要求2所述的匹配规则包含位移指示符的并行多模式匹配的系统,其特征在于,所述在确定所述匹配规则的子规则后,标识所述匹配规则的子规则进一步为标识所述匹配规则,使用所述子规则所属匹配规则的标识和所述子规则在匹配规则中的顺序号标识所述子规则。
4.如权利要求3所述的匹配规则包含位移指示符的并行多模式匹配的系统,其特征在于,匹配规则的第一个子规则的顺序号为1,
所述节点处理模块,还用于在终态节点处匹配的子规则为匹配规则的第一个子规则时,将所述子规则对应的位移量记录为0,并记录所述所有子规则的字符数;
所述匹配状态表生成模块,还用于将所述匹配状态表中的最近匹配的子规则的顺序号和最近匹配的子规则的匹配位置初始化为0;
所述匹配模块进一步包括
状态转移模块,用于进行所述读取搜索对象,按AC算法应用所述AC自动机进行搜索的过程;
处理模块,用于查找所述节点规则表,获得当前终态节点匹配的子规则的标识、所述子规则对应的位移量和所述子规则的字符数,按所述子规则标识查找所述匹配状态表,获得所述子规则所属匹配规则的子规则总数、最近匹配的子规则顺序号和最近匹配的子规则的匹配位置,比较所述子规则顺序号和所述最近匹配的子规则顺序号,所述子规则匹配位置和所述最近匹配的子规则匹配位置,如果所述子规则顺序号同所述最近匹配的子规则顺序号的差值等于1,并且所述子规则的匹配位置同所述最近匹配的子规则的匹配位置的差值减去所述子规则的字符数符合所述子规则对应的位移量,则根据所述子规则顺序号和所述子规则总数判断所述子规则是否是最后一个子规则,如果是,则所述搜索对象同所述匹配规则匹配,如果不是,则更新匹配状态表中所述最近匹配子规则顺序号为所述子规则的顺序号,所述最近匹配子规则的匹配位置为所述子规则的匹配位置。
5.一种匹配规则包含位移指示符的并行多模式匹配的方法,其特征在于,包括:
步骤1,读取包含匹配规则的规则集,将所述规则集中包含位移指示符的匹配规则从位移指示符处分割成所述匹配规则的子规则,每个所述子规则为确定规则,连接于所述位移指示符后的子规则对应的位移量为所述位移指示符规定的位移量,所述规则集中为确定规则的匹配规则作为其自身的子规则,并将所有子规则按照AC算法生成AC自动机;
步骤2,读取搜索对象,按AC算法应用所述AC自动机进行搜索,判断所述搜索对象是否按子规则在所述匹配规则中的顺序匹配所述匹配规则的所有子规则,并且对于连接于位移指示符后的子规则按所述子规则对应的位移量匹配所述子规则,如果是,则所述搜索对象匹配所述匹配规则,并输出匹配结果。
6.如权利要求5所述的匹配规则包含位移指示符的并行多模式匹配的方法,其特征在于,所述步骤1进一步包括,
步骤61,在确定所述匹配规则的子规则后,标识所述匹配规则的子规则;
步骤62,在生成所述AC自动机后,生成节点规则表,记录在所述AC自动机中的终态节点处匹配的所有子规则标识和所述连接于位移指示符后的子规则对应的位移量,以供在搜索时进行查找;
步骤63,生成匹配状态表,所述匹配状态表中的一行对应于所述规则集中的一个匹配规则,每行记录对应匹配规则包含的子规则总数、最近匹配的子规则的顺序号和最近匹配的子规则的匹配位置,以供在搜索时进行查找。
7.如权利要求6所述的匹配规则包含位移指示符的并行多模式匹配的方法,其特征在于,所述步骤61进一步为标识所述匹配规则,使用所述子规则所属匹配规则的标识和所述子规则在匹配规则中的顺序号标识所述子规则。
8.如权利要求7所述的匹配规则包含位移指示符的并行多模式匹配的方法,其特征在于,匹配规则的第一个子规则的顺序号为1,
所述步骤62,还包括在终态节点处匹配的子规则为匹配规则的第一个子规则时,将所述子规则对应的位移量记录为0,并记录所述所有子规则的字符数;
所述步骤63,还包括将所述匹配状态表中的最近匹配的子规则的顺序号和最近匹配的子规则的匹配位置初始化为0;
所述步骤2进一步包括,
步骤81,查找所述节点规则表以获得匹配的子规则标识、所述子规则对应的位移量和所述子规则的字符数,查找匹配状态表,获得所述子规则所属匹配规则的子规则总数、最近匹配的子规则顺序号和最近匹配的子规则的匹配位置;
步骤82,判断所述子规则顺序号同所述最近匹配的子规则顺序号的差值是否等于1,并且所述子规则的匹配位置同所述最近匹配的子规则的匹配位置的差值减去所述子规则的字符数是否符合所述子规则对应的位移量,如果是,则执行步骤83;
步骤83,根据所述子规则顺序号和所述子规则总数判断所述子规则是否是最后一个子规则,如果是,则所述搜索对象同所述匹配规则匹配,如果不是,则更新匹配状态表中所述最近匹配子规则顺序号为所述子规则的顺序号,所述最近匹配子规则的匹配位置为所述子规则的匹配位置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101179456A CN101377816B (zh) | 2008-08-15 | 2008-08-15 | 匹配规则包含位移指示符的并行多模式匹配的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101179456A CN101377816B (zh) | 2008-08-15 | 2008-08-15 | 匹配规则包含位移指示符的并行多模式匹配的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101377816A true CN101377816A (zh) | 2009-03-04 |
CN101377816B CN101377816B (zh) | 2010-10-13 |
Family
ID=40421351
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008101179456A Expired - Fee Related CN101377816B (zh) | 2008-08-15 | 2008-08-15 | 匹配规则包含位移指示符的并行多模式匹配的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101377816B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104714951A (zh) * | 2013-12-13 | 2015-06-17 | 世纪禾光科技发展(北京)有限公司 | 一种并行多模式匹配的方法及系统 |
CN105224472A (zh) * | 2015-10-22 | 2016-01-06 | 上海新储集成电路有限公司 | 一种寻找常用内容的匹配方法及系统 |
CN107291761A (zh) * | 2016-04-05 | 2017-10-24 | 北京优朋普乐科技有限公司 | 一种正则表达式的匹配方法和装置 |
CN110222143A (zh) * | 2019-05-31 | 2019-09-10 | 北京小米移动软件有限公司 | 字符串匹配方法,装置,存储介质及电子设备 |
CN112069303A (zh) * | 2020-09-17 | 2020-12-11 | 四川长虹电器股份有限公司 | 字符串的匹配查找方法、装置及终端 |
-
2008
- 2008-08-15 CN CN2008101179456A patent/CN101377816B/zh not_active Expired - Fee Related
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104714951A (zh) * | 2013-12-13 | 2015-06-17 | 世纪禾光科技发展(北京)有限公司 | 一种并行多模式匹配的方法及系统 |
CN105224472A (zh) * | 2015-10-22 | 2016-01-06 | 上海新储集成电路有限公司 | 一种寻找常用内容的匹配方法及系统 |
CN105224472B (zh) * | 2015-10-22 | 2018-08-28 | 上海新储集成电路有限公司 | 一种寻找常用内容的匹配方法及系统 |
CN107291761A (zh) * | 2016-04-05 | 2017-10-24 | 北京优朋普乐科技有限公司 | 一种正则表达式的匹配方法和装置 |
CN110222143A (zh) * | 2019-05-31 | 2019-09-10 | 北京小米移动软件有限公司 | 字符串匹配方法,装置,存储介质及电子设备 |
CN112069303A (zh) * | 2020-09-17 | 2020-12-11 | 四川长虹电器股份有限公司 | 字符串的匹配查找方法、装置及终端 |
CN112069303B (zh) * | 2020-09-17 | 2022-08-16 | 四川长虹电器股份有限公司 | 字符串的匹配查找方法、装置及终端 |
Also Published As
Publication number | Publication date |
---|---|
CN101377816B (zh) | 2010-10-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101286988B (zh) | 一种并行多模式匹配的方法及系统 | |
Chakrabarti et al. | A graph-theoretic approach to webpage segmentation | |
CN101464905B (zh) | 一种网页信息抽取的系统及方法 | |
JP5796494B2 (ja) | 情報処理装置、情報処理方法、及びプログラム | |
TW200900958A (en) | Link spam detection using smooth classification function | |
KR20180011254A (ko) | 웹페이지 트레이닝 방법 및 기기, 그리고 검색 의도 식별 방법 및 기기 | |
CN103136228A (zh) | 一种图片搜索方法以及图片搜索装置 | |
CN101377816B (zh) | 匹配规则包含位移指示符的并行多模式匹配的方法及系统 | |
CN101685502A (zh) | 模式匹配方法及装置 | |
CN101388044A (zh) | 匹配规则包含或运算符的并行多模式匹配的方法及系统 | |
CN112256842A (zh) | 用于文本聚类的方法、电子设备和存储介质 | |
CN101677318B (zh) | 匹配规则包含次数指示符的并行多模式匹配的方法及系统 | |
CN102663108B (zh) | 基于复杂网络模型并行化标签传播算法的药物社团发现方法 | |
CN110263021B (zh) | 一种基于个性化标签体系的主题库生成方法 | |
CN100361128C (zh) | 一种用于文本或网络内容分析的多关键词匹配方法 | |
Falleri et al. | Automatic tag identification in web service descriptions. | |
WO2022262632A1 (zh) | 网页搜索方法、装置及存储介质 | |
CN101441664A (zh) | 匹配规则包含可选字符的并行多模式匹配的方法及系统 | |
El-Hajj et al. | An optimal approach for text feature selection | |
CN104714951A (zh) | 一种并行多模式匹配的方法及系统 | |
Khan et al. | Multimodal rule transfer into automatic knowledge based topic models | |
CN111090743B (zh) | 一种基于词嵌入和多值形式概念分析的论文推荐方法及装置 | |
Martín-del-Campo-Rodríguez et al. | Unsupervised authorship attribution using feature selection and weighted cosine similarity | |
JP5238105B2 (ja) | プログラム、及びデータ抽出方法 | |
Heath et al. | A multiple domain comparison of multi-label classification methods |
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 |
Granted publication date: 20101013 Termination date: 20170815 |
|
CF01 | Termination of patent right due to non-payment of annual fee |