专利名称:一种模式匹配方法及装置的制作方法
技术领域:
本发明涉及计算机领域,特别涉及字符串模式匹配领域,具体的讲是一 种模式匹配方法及装置。
背景技术:
当今,我们生活在一个充斥着各种各样信息的时代,特别是在互联网上, 各种信息通过邮件列表,分发列表,视频会议,新闻组等一系列手段传递给 许多人。我们这个时代是信息快捷而自由地传递的时代,信息的快速自由地 传递为社会的发展和进步提供了有利的条件,但是也带来了很多问题。现在,通过互联网,每一个人都能非常容易地发布自己的信息,这同时 也意味着在互联网上充斥着海量的信息,而且这些信息的质量也是各种各样 的。在这些信息当中,有许多有价值的信息,但是同时,更多的是一些垃圾 信息,比如说垃圾邮件等等。在实际生活中,人们通常只是想阅读自己感兴趣的东西,而不想去阅读 自己不感兴趣的东西。不幸的是,互联网本身并没有提供这种机制,所以, 互联网的用户直接面临着在网上无限制传播的大量信息,会很容易地被信息 流所淹没。面对这海量的信息,对于这个问题,过滤是帮助人们获得有价值 信息的有用工具,通过过滤,互联网的用户只需要花很少的时间就能获得自 己感兴趣的信息。通过模式匹配的算法解决了这个问题,在模式匹配中找到最合适的关键字的匹配集是十分重要的。多模式的匹配即是有K个模式 P[l] ...P[K]和一个文本T,寻找K个模式中的任何一个模式在K中是否出 现以及出现的位置,1975年由A. V. Aho和M. J. Corasick公开了一种AC 算法,能够有效的对URL进行匹配和过滤,以使文献检索变得更加迅速。图1为 现有AC算法的模式匹配集和示意图。规定一模式的集合为PI: "movie/*P2: */music/*P3: */root/public/* P4: */movie/comedy/*其中通配符"*"在两端的意思为这些模式为关键字,可能出现在一个字 符串的任意部分。图中虛线方框内的节点为匹配的模式。对于AC算法来说, 它的处理方法是基于一个关键字树,这个关键字树由匹配集合中的所有关键 字构成。当对一字符串进行分析时,该字符串逐字符的穿过关键字树,直到 整个字符串都被分析,找出这个字符串的所有关键字。但是这个方法不能应 用于多个关键字之间通过通配符连接的情况。目前的一些方案中,可以通过不确定有限状态机实现多个关键字的匹配 问题,但是需要为每个模式配置一个状态机,如果需要匹配的模式比较多则 可能出现成千上万个状态机,处理一个比较复杂的字符串时,这些状态机都 要并行处理,4艮浪费资源,并且处理速度不够理想。中国专利200410023142, —种基于特征值的多模式匹配算法及硬件实现 专利,公开了一种对信息进行两次匹配的方法,先滤除一些不重要的信息, 对感兴趣的信息进行第二次滤除,但是该方法也不能够解决模式中多个关键 字不连续的问题。发明内容为了解决以上问题,本发明提出一种模式匹配方法及其装置,实现了对 模式中由通配符连接关键字的匹配,并且对硬件的要求不高,耗费的系统资 源4艮少的优点。一种模式匹配方法,分段器根据模式中的通配符将模式按顺序分段,每一段为一个元关键 字,将具有相同段数n的m个模式作为一个模式集合,其中n=2, 3..., m=l, 2, 3…;在一个模式集合中,每一个模式包含至少一个元关键字,针对每个元关 键字建立一个映射表,记录包含该元关键字的模式,该映射表由n个映射串 BM!...BMn构成,该映射表中的n个映射串与一个模式中的n个段——对应, 所述每一个映射串都由m个布尔型数值组成;在每一个所述映射串的第x 位标记第x个模式的相应段中是否含有该元关键字,其中x为大于等于1, 小于等于m的整数;编译器根据所述分段后的元关键字生成关键字树,由状态机在所述关键字树的节点中匹配待处理字符串,找出所述待处理字符串中的所有元关键字,串运算变量CBM卜.CBMn中的每一个串运算变量都由m个布尔型数值 组成,初始化所有串运算变量CBM卜.CBMn各位的布尔型数值为0;按照下列公式处理匹配的所述待处理字符串中的每一个元关键字CBM, = CBM! I BM!,更新CBM,;CBMj-CBMw&BMilCBMi,更新CBM。其中"&,,为"与,,操作,"|,,为 "或"操作,i为大于等于2,小于等于n的整数,处理每个元关键字时的 BM,... BMn为该元关4走字映射表中的映射串;在处理过程中,CBM,... CBMn为处理上一元关键字步骤中更新后的 CBM卜.CBMn;处理完所述待处理字符串的所有关键字,将CBM!... CBMn进行"与"操 作,最后由布尔型数值构成的结果代表了与所述待处理字符串相匹配的模式 编号,输出至少一个模式编号。在输出至少 一个模式编号之前还包括一优选步骤,预先设定每个模式编 号的优先级,将优先级最高的模式编号输出。在所述编译器根据元关键字生成关键字树之前,分段器根据元关键字字 符串中的特殊字符将所述元关键字进行再分段,所述编译器根据分段结果的 字符串片段生成关键字树,所述关键字树节点的每个分支条件都是字符串片 段;并且分段器将所述待处理字符串根据字符串中的上述特殊字符进行分 段,并传送给所述状态机,所述状态机将所述待处理字符串片段在所述关键 字树节点中进行匹配,找出所述待处理字符串中所有的元关键字。所述特殊字符包括"/"、"."。一种模式匹配装置,包括编译器,根据关键字生成关键字树;状态机, 利用所述关键字树匹配待处理字符串,找出所述待处理字符串中的所有元关 键字;还包括,分段器,根据通配符将一个模式集合中的模式分段,每一段都为一个元 关键字,将所述元关键字输入所述编译器和处理单元;所述处理单元,在一个模式集合中,每一个模式包含至少一个元关键字, 针对每个元关键字建立一个映射表,记录包含该元关键字的模式,该映射表由n个映射串BM卜.BMn构成,其中n为上述模式集合中的一个模式的段数,n=2, 3...,该映射表中的n个映射串与一个模式中的n个段——对应,所述 每一个映射串都由m个布尔型数值组成,其中m与所述模式集合中模式的 数量相等,m=l, 2, 3...;在每一个所述映射串的第x位标记第x个模式的 相应段中是否含有该元关键字,其中x为大于等于l,小于等于m的整数; 编译器根据所述分段后的元关键字生成关键字树,由状态机在所述关键字树的节点中匹配待处理字符串,找出所述待处理字符串中的所有元关键 字,串运算变量CBM卜.CBMn中的每一个串运算变量都由m个布尔型数值 组成,初始化所有串运算变量CBM,...CBMn各位的布尔型数值为0;按照下列公式处理匹配的所述待处理字符串中的每一个元关键字CBM! = CBM! I BM!,更新CBM,;CBM「CBMw&BMilCBMi,更新CBMi,其中"&"为"与"操作,"|"为 "或"操作,i为大于等于2,小于等于n的整数,处理每个元关键字时的BM,... BMn为该元关键字映射表中的映射串;在处理过程中,CBM….CBMn为处理上一元关键字步骤中更新后的 CBM卜.CBMn;处理完所述待处理字符串的所有关键字,将CBM….CBMn进行"与"操 作,最后由布尔型数值构成的结果代表了与所述待处理字符串相匹配的模式编号,将所述模式编号传送给输出单元;所述输出单元输出上述模式编号。在所述处理单元与输出单元之间还具有一优选单元,按照预先设定的每 个模式编号的优先级,将优先级最高的模式编号输出。所述分段器根据元关键字字符串中的特殊字符将所述元关键字再分段, 输入所述编译器,并且所述分段器根据上述特殊字符将所述待处理字符串分 段后输入所述状态机。本发明的有益效果在于,本发明方法能够匹配模式中多个关键字之间具 有通配符的字符串,减少了对硬件装置的要求,成本低。由于资源耗费很少,所以可以^^用软件来实现匹配工作,并且效率相^_现有软件匹配有^艮大揭: 高。
图1为现有技术模式匹配处理状态图;字树状态图; 图3为本发明对两段模式的算法示意图; 图4为本发明对三段模式的算法示意图; 图5为本发明装置示意图。
具体实施方式
下面,结合附图对于本发明进行如下详细说明。本发明映射串模式匹配方法的原理为,先搜索关键字,并最终根据关键 字匹配找到匹配的模式,模式与元关键字都被存储于映射串中。首先,所有的模式都将被拆散成关键字,被称为元关键字。第二步,每一个关键字的有关于模式关系的附加信息都将被保存。这些有关于模式关系的信息是指,元关键字和原始模式之间的映射关系,这种映 射关系体现为映射串的形式。例如,元关键字k的映射串为"1001 0100",代 表第三、第五和第八模式都包括元关键字k (假设顺序号的最低位在右边)。 为了区分元关键字在模式中的位置,至少需要一位布尔型数值表示(0或1 )。 模式"Vmovie/气mpeg",具有两个元关键字并且模式分为两段"/movie/"是 位于第l段的关键字,".mpeg"是位于第2段的关键字。如果在一个模式集 中具有d个模式,则每一个元关键字都需要d个布尔型数值表示,以表示在 某段上哪个模式中包含了这个元关键字。第三步,利用AC算法或者其他已知的模式匹配算法根据所有的元关键 字建立关键字树,每个元关键字节点为所有段都指派了相应的位,例如BM, 对应于第1段,BM2对应于第2段。通过遍历关键字树所有的匹配元关键字都能够被找到,当在为一给定的 候选字符串搜索关键字树时,应该有两个映射串变量CBMi和CBM2存储在 当前第 一段和第二段中的匹配模式。在遍历过程中 一个元关键字被找到则根 据BM,和BM2的如下关系更新CBMi和CBM2:CBM! = CBMi i BMjCBM2 = CBMi & BM21 CBM2一般化形式,对于CBMi,CBM^CBMw&BMilCBMi,其中"&"为"与"操作,"卩,为"或"操作。 当所有匹配关键字都被找到,通过对CBM, , CBM2, ...CBMj进行200610141484.7说明书第6/10页"AND,,操作,匹配模式的索引就能够被找到。如果有一个以上模式存在,则 将这多个模式按照预先设定的优先级的顺序排列,以至于通过使用优先级译 码器能够得到最好的匹配模式。通过本发明方法,只需要一个有限状态才几(FSM)用于完成多关^;字才莫 式搜索。因此,能够使用关键字树来搜索多关键字模式;减小对硬件的要求, 使能够通过软件方式进行模式匹配;如果通过软件方式只需要一个进程或线 程。模式为PI: VmoviCmpeg* P2: */music/* .mp3* P3: Vroot/public/承.mp3f P4: "comedy/* .mpeg* 元关键字为kl: /movie/ BM" 0001 BM2: 0000k2: .mpeg BM!: 0000 BM2: 1001k3: /music/ BM!: 0010 BM2: 0000k4: .mp3 BM" 0000 BM2: 0110k5:/root/public/ BM" 0100 BM2: 0000 k6: /comedy/ BM,: 1000 BM2: 0000在映射串中,模式最低的序号都在最右边,关键字树如图2所示。当一 个给定的字符串"/root/public/movie/comedy/laura.mpeg",匹配元关4定字顺序 包括"/root/public/" , "/movie/", "/comedy/"和".mpeg"。对于该字符串的运 算和映射串的更新如图3所示。当运算开始的时候当前CBM!和CBM2都为"0000",根据字符串的先后 顺序,首先找到的元关鍵字k5为"/root/public/",根据该元关键字的信息, 其在模式3 (P3)中出现,而且是在第l段中出现的,所以BM,为"0100", 由于该元关键字k5的第2段BM2为"0000",所以通过以上公式CBMi = CBMj I BM!,计算结果CBM!为"0100",更新CB1V^。 CBM2 = CBM! & BM21 CBM2 计算结果CBM2为"0000",更新CBM2。其中,等式右边的CBM!和CBM2 均为更新后的CBM!和CBM2。字符串的下一个元关键字为kl"/movie/",该元关键字的信息,其在模式1 (Pl)中出现,而且是在第l段中出现的,所以BMi为"0001",由于该元 关键字kl的第2段BM2为"0000",所以通过以上公式CBMi -CBM! | BMP 计算结果CBM!为"0101",更新CBM卜CBM2二CBM!&BM2lCBM2计算 结果CBM2为"OOOO", 更新CBM2。其中,等式右边的CBM,和CBM2均为 更新后的CBM,和CBM2。字符串的下一个元关键字为k6"/comedy/",该元关键字的信息,其在模 式4(P4)中出现,而且是在第l段中出现的,所以所以BM!为"1000",由 于该元关键字k6的第2段BM2为"0000",所以通过以上公式CBM! = CBM! |BMP计算结果CBMi为"llOl",更新CBMi。 CBM2 = CBM! & BM2 | CBM2 计算结果CBM2为"0000",更新CBM2。其中,等式右边的CBM,和CBM2 均为更新后的CBM,和CBM2。字符串的下一个元关键字为k2".mpeg",该元关键字的信息,其在模式 1 (Pl)中出现,而且也在模式4 (P4)中出现,并且都是在第2段中出现 的,所以BM!为"0000",该元关键字k2的第2段BM2为"1001",所以通过 以上公式CBM! = CBM, I BMP计算结果CBMi为"1101",更新CBM!。 CBM2 二CBM!&BM2lCBM2计算结果CBM2为"1001",更新CBM2。其中,等式 右边的CBMi和CBM2均为更新后的CBMi和CBM2。字符串处理完毕,将最后的CBM:i和CBM2相"与",得出结果"1001", 即代表合适的匹配模式为模式1 (Pl)和模式4 (P4)。图4为本发明对于具有3段元关键字的实施例图。如果存在另外一组段 数为3的模式集合,即,每个模式中具有3个关键字,CBM和BM的脚标 为5-7。该模式集合中具有3个模式,所以CBM和BM为三位二进制代码 表示。模式为P5: */root/public /*/movie/*.mpeg* P6: */root/public/*/music/*.mp3* P7: */root/public /*/comedy/*. mpeg * 将模式的关键字分开,元关键字为 kl: /root/ public腿,111 BM2: 000 BM3: 000 k2: /movie/ BM!: 000 BM:!: 001 BM3: 000k3: .mpeg BM!: 000 BM:!: 000 BM3: 101 k4: /music/ BM!: 000 BM2: 010 BM3: 000k5: .mp3 BM!: 000 BM2: 000 BM3: 010k6: /comedy/ BM!: 000 BM2: 100 BM3: 000当 一 个给定的字符串"/root/publicZmovie/comedy/laura.mpeg,,, 匹配元关 键字顺序包括"/root/public/" , "/movie/", "/comedy"和".mpeg"。对于该字 符串的运算和映射串的更新如图4所示。当运算开始的时候当前CBM。 CBM2和CBM3都为"000",根据字符串 的先后顺序,首先找到的元关键字kl为"/root/public/",根据该元关键字的 信息,其在模式5-7 (P5-P7 )中都出现过,而且是在第l段中出现的,所以 元关键字kl的第1段BM!为"111",第2段BM2为"000",第3段BM3为"000", 所以通过以上公式CBMi = CBM! i BMP计算结果CBM!为"111",更新 CBM" CBM2:CBMi&BM2lCBM2计算结果CBM2为"000",更新CBM2。 CBM3:CBM2&BM3lCBM3计算结果CBM3为"000",更新CBM3。其中, 等式右边的CBMi 、 CBM2和CBM3均为更新后的CBM! 、 CBM2和CBM3 。字符串的下一个元关键字为k2"/movie/",该元关键字的信息,其在模式 5(P5)中出现,而且是在第2段中出现的,所以元关键字k2的第1段BM! 为"000,,,第2段BM2为"001,,,第3段BM3为"000,,,所以通过以上公式CBMi -CBMJBMp计算结果CBM!为"ll].,,,更新CBM" CBM2 = CBM! & BM2 ICBM2计算结果CBM2为"001",更新CBM2。 CBM3 = CBM2 & BM31 CBM3 计算结果CBM3为"000",更新CBM3。其中,等式右边的CBMp CBM^和 CBM3均为更新后的CBM, 、 CBM2和CBM3 。字符串的下一个元关键字为k6"/comedy/",该元关键字的信息,其在模 式7 (P7)中出现,而且是在第2段中出现的,所以元关键字k6的第1段 BMi为"000",第2段BM2为"100",第3段BM3为"000",所以通过以上公 式CBMi = CBMi I BMp计算结果CBMi为"111",更新CBM!。 CBM2 = CBM
& BM21 CBM2计算结果CBM2为"101",更新CBM2。 CBM3 = CBM2 & BM31 CBM3计算结果CBM3为"000",更新CBM3。其中,等式右边的CBM!、 CBM2 和CBM3均为更新后的CBMt 、 CBM2和CBM3 。字符串的下一个元关键字为k3".mpeg",其在模式1 (PI)中出现,而 且也在模式7(P7)中出现,并且都是在第3段中出现的,所以元关键字k3 的第l段BMi为"OOO,,,第2段BM2为"000",第3段BM3为"101",所以通
过以上公式CBM, = CBM, I B1V^ ,计算结果CBM,为"111",更新CBM, 。 CBM2 =CBMt & BM2 I CBM2计算结果CBM:!为"101",更新CBM2。 CBM3 = CBM2 & BM31 CBM3计算结果CBM3为"101",更新CBM3。其中,等式右边的CBM,、 CBM2和CBM3均为更新后的CBM, 、 CBM2和CBM3。字符串处理完毕,将最后的CBM,和CBM2和CBM3相"与",得出结果 "101",即代表合适的匹配模式为模式5 (P5)和模式7 (P7)。作为进一步的优选实施例,可以在每个^t式的数据结构中加入优先级的 标志位,在检索出符合匹配的多个模式后,根据模式的标志位,决定哪个模 式是最接近的,例如,以上例子中检索出了 4个匹配的模式P1,P4,P5,P7,如 果在P5的数据结构中的优先级最高,则只对输入的字符串应用符合P5的规 则。同时,在建立关键字树和输入待处理字符串的时候,可以先将元关键字 再次分段,分段的规则是根据元关键字字符串中的特殊字符分段,例如"/"、 "."等方式,以字符串片段的形式输入编译器,生成关键字树,树中的每个节 点的分支条件都是一个字符串片段(该字符串片段可能是元关键字字符串片 段,或者可能是元关键字字符串片段中的一部分),将待处理字符串也以同 样的规则分割成字符串片段输入状态机,进行匹配操作。匹配的过程中将待 处理字符串片段与节点分支的字符串片段进行比较,可以使用哈希算法或者 其他现有技术中字符串比较的方式进行比较,得出待处理字符串中所有的元 关键字字符串。本发明在查找待处理字符串中的元关键字时不限制匹配的方法,可以利 用现有的AC算法,也可以使用其他的匹配方法。图5为本发明装置结构图。分段器将某一集合中的模式分段,每一段都 是一个元关键字,将所述元关键字传送到编译器,生成关键字树。由状态机 对待处理字符串结合关键字树进行匹配操作,并查找出该待处理字符串中所 有的关键字,传送给处理单元。处理单元与所述分段器、状态机相连接,建 立与所述元关^;字相对应的映射表,在映射表的不同映射串BMj中分别记录 在该段中出现所述元关键字的模式标记,然后初始化串运算变量CBM,各位的布尔型数值为0;对状态机查找出来的待处理字符串中每个元关键字按照如下公式进行 处理
CBMt = CB1V^ I BM,,更新CBM!;CBMi^CBMw&BMilCBMi,更新CBMi,其中"&,,为"与"操作,"|"为 "或"操作,i=2...n, n为一个模式的段数;按照以上公式处理所有所述关键字,将CBMi... CBMn进行"与,,操作, 最后由布尔型数值构成的结果代表了与所述待处理字符串相匹配的模式编 号,将所述模式编号传送给输出单元;所述输出单元输出上述模式编号。在所述处理单元和输出单元之间还包括一个优选单元(图未示),根据 模式优先级的顺序将优先级最高的模式ID传送给输出单元。该模式优先级 预先存储于模式的数据结构中。所述分段器还可以将元关键字分段,根据元关键字中的特殊字符分段, 例如,"/"、"."等方式,输入编译器生成关键字树,关键字树节点的每个分 支条件都是一个上述的元关键字字符串或者是元关键字的一个片段。该分段 器还将待处理字符串进行同样的分段,在状态机进行匹配操作时,将待处理 字符串的一个字符串片段与关键字树的节点分支进行比较,获得待处理字符 串中所有的元关键字,并传送给处理单元。本发明的有益效果在于,本发明方法能够匹配模式中多个关键字之间具 有通配符的字符串,减少了对硬件装置的要求,成本低。由于资源耗费很少, 所以可以使用软件来实现匹配工作,并且效率相较现有软件匹配有很大提 高。以上具体实施方式
仅用于说明本发明,而非用于限定本发明。
权利要求
1.一种模式匹配方法,其特征在于,分段器根据模式中的通配符将模式按顺序分段,每一段为一个元关键字,将具有相同段数n的m个模式作为一个模式集合,其中n=2,3...,m=1,2,3...;在一个模式集合中,每一个模式包含至少一个元关键字,针对每个元关键字建立一个映射表,记录包含该元关键字的模式,该映射表由n个映射串BM1...BMn构成,该映射表中的n个映射串与一个模式中的n个段一一对应,所述每一个映射串都由m个布尔型数值组成;在每一个所述映射串的第x位标记第x个模式的相应段中是否含有该元关键字,其中x为大于等于1,小于等于m的整数;编译器根据所述分段后的元关键字生成关键字树,由状态机在所述关键字树的节点中匹配待处理字符串,找出所述待处理字符串中的所有元关键字,串运算变量CBM1...CBMn中的每一个串运算变量都由m个布尔型数值组成,初始化所有串运算变量CBM1...CBMn各位的布尔型数值为0;按照下列公式处理匹配的所述待处理字符串中的每一个元关键字CBM1=CBM1|BM1,更新CBM1;CBMi=CBMi-1&BMi|CBMi,更新CBMi,其中“&”为“与”操作,“|”为“或”操作,i为大于等于2,小于等于n的整数,处理每个元关键字时的BM1...BMn为该元关键字映射表中的映射串;在处理过程中,CBM1...CBMn为处理上一元关键字步骤中更新后的CBM1...CBMn;处理完所述待处理字符串的所有关键字,将CBM1...CBMn进行“与”操作,最后由布尔型数值构成的结果代表了与所述待处理字符串相匹配的模式编号,输出至少一个模式编号。
2. 根据权利要求1所述的一种模式匹配方法,其特征在于,在输出至 少一个模式编号之前还包括一优选步骤,预先设定每个模式编号的优先级, 将优先级最高的模式编号输出。
3. 根据权利要求1所述的一种模式匹配方法,其特征在于,在所述编 译器根据元关键字生成关键字树之前,分段器根据元关键字字符串中的特殊字符将所述元关键字进行再分段,所达编译器才艮据分,更结果的字符串片段生成关键字树,所述关键字树节点的每入分支条件都是字符串片段;并且分段迷状态机,所迷状态机将所述待处理字符串片段在所述关键字树节点中进行 匹配,找出所述待处理字符串中所有的元关键字。
4. 根据权利要求3所述的一种模式匹配方法,其特征在于,所述特殊 字符包括"/"、"."。
5. —种模式匹配装置,包括编译器,根据关键字生成关键字树;状态 机,利用所述关键字树匹配待处理字符串,找出所述待处理字符串中的所有 元关键字;其特征在于还包括,分段器,根据通配符将一个模式集合中的模式分段,每一段都为一个元 关键字,将所述元关键字输入所述编译器和处理单元;所述处理单元,在一个模式集合中,每一个模式包含至少一个元关键字, 针对每个元关键字建立一个映射表,记录包含该元关键字的模式,该映射表 由n个映射串BM….BMn构成,其中n为上述模式集合中的一个模式的段数, n=2, 3...,该映射表中的n个映射串与一个模式中的n个段——对应,所述 每一个映射串都由m个布尔型数值组成,其中m与所述模式集合中模式的 数量相等,m=l, 2, 3...;在每一个所述映射串的第x位标记第x个模式的 相应段中是否含有该元关键字,其中x为大于等于l,小于等于m的整数;编译器根据所述分段后的元关键字生成关键字树,由状态机在所述关键 字树的节点中匹配待处理字符串,找出所述待处理字符串中的所有元关键 字,串运算变量CBM卜.CBMn中的每一个串运算变量都由m个布尔型数值 组成,初始化所有串运算变量CBM卜.CBMn各位的布尔型数值为0;按照下列公式处理匹配的所述待处理字符串中的每一个元关键字CBMi = CBMt I BM!,更新CBM,;CBM^CBMw&BMilCBMi,更新CBMi,其中"&"为"与"操作,"|"为 "或"操作,i为大于等于2,小于等于n的整数,处理每个元关键字时的BM卜.. BMn为该元关键字映射表中的映射串;在处理过程中,CBM卜.CBMn为处理上一元关键字步骤中更新后的 CBM卜..CBMn;处理完所述待处理字符串的所有关键字,将CBM卜..CBM。进行"与,,操 作,最后由布尔型数值构成的结杲代表了与所述待处理字符串相匹配的模式 编号,将所述模式编号传送给输出单元;所述输出单元输出上述模式编号。
6. 根据权利要求5所述的一种模式匹配装置,其特征在于,在所述处 理单元与输出单元之间还具有一优选单元,按照预先设定的每个模式编号的 优先级,将优先级最高的模式编号输出。
7. 根据权利要求5所述的一种模式匹配装置,其特征在于,所述分段 器根据元关键字字符串中的特殊字符将所述元关键字再分段,输入所述编译 器,并且所述分段器根据上述特殊字符将所述待处理字符串分段后输入所述 状态机。
全文摘要
本发明涉及计算机领域,具体的讲是一种模式匹配方法及装置,为了解决在模式的多个关键字之间不连续的模式匹配问题,本发明方法将多个不连续的关键字分段,用布尔型映射表分别记录每个模式中出现同一关键字的信息,经过本发明的算法获得与待处理字符串匹配的模式。经过简单的算法使计算机对不连续关键字的模式进行识别,成本低,并且处理速度很快。
文档编号G06F17/30GK101154225SQ20061014148
公开日2008年4月2日 申请日期2006年9月29日 优先权日2006年9月29日
发明者张若渊, 阙开良 申请人:西门子公司