一种分段模式匹配方法及其装置的制作方法

文档序号:6563576阅读:193来源:国知局
专利名称:一种分段模式匹配方法及其装置的制作方法
技术领域
本发明涉及计算机领域,特别涉及字符串模式匹配领域,具体来讲是一 种分段模式匹配方法及其装置。
背景技术
现在,通过互联网,每一个人都能非常容易地发布自己的信息,这同时 也意味着在互联网上充斥着海量的信息,而且这些信息是各种各样的。在这 些信息当中,有许多有价值的信息,但是同时,更多的是一些垃圾信息,比 如垃:t及邮件等等。在实际生活中,人们通常只是想阅读自己感兴趣的东西,而不想去阅读 自己不感兴趣的东西。不幸的是,互联网本身并没有提供这种机制,所以, 互联网的用户直接面临着在网上无限制传播的大量信息,会很容易地被信息 流所淹没。面对这海量的信息,过滤是帮助人们获得有价值信息的有用工具,通过过滤,互联网的用户只需要花很少的时间就能获得自己感兴趣的信息;网络设备可以过滤掉有害信息,或者识别出特别的重要信息。模式匹配的算 法解决了这个问题,在模式匹配中找到匹配集中最合适的关键字是十分重要的。多模式的匹配即是有K个模式P[l] ...P[K]和一个文本T,寻找K个模 式中的任何一个模式在T中是否出现以及出现的位置,1975年由A.V.Aho 和M. J. Corasick^^开了一种有限子动^L的多^t式匹配算法(AC算法),能 够有效的对文本进行匹配和过滤,以使文献检索变得更加迅速。图1为现有AC算法的模式匹配集和示意图。图中虚线方框内的就是匹 配的模式。规定模式的集合为PI: */movie/*P2: */music/*P3: */root/public/ *P4: */movie/comedy/*其中通配符"*"在两端的意思为,以这些模式为关键字,可能出现在一
个字符串或者文本的任意部分。对于AC算法来说,它的处理方法是基于一 个关键字树,这个关键字树由匹配集合中的所有关键字构成,每个节点分支 的判断条件都是一个字符。当对一字符串进行分析时,该字符串逐字符穿过 关键字树直到整个字符串都被分析完成为止。由一个状态机对关键字树进行 匹配操作,关键字树的每一个节点都为有限状态机的一个可能状态。其中, 节点为静态的,是可能的状态的描述,而状态是状态机在某一特定时刻的描 述。中国专利200410023142, —种基于特征值的多才莫式匹配算法及硬件实现 专利,公开了一种对信息进行两次匹配的方法,先滤除一些不重要的信息, 对感兴趣的信息进行第二次滤除,但是该方法需的存储器容量也很大,并且 该方法的匹配速度不够理想。发明内容为了解决以上问题,本发明提供一种分段模式匹配方法,将格式化的字 符串进行分^R并进行模式匹配,以达到更快速的效杲。为了解决以上问题,本发明提供一种分段模式匹配装置,将字符串分段, 并进行模式匹配以达到对硬件要求4氐的效果。一种分段模式匹配方法,包括,步骤1,根据模式字符串中的特殊符号或者根据语言结构将模式字符串 划分成至少一个关键字字符串片段,由编译器利用现有匹配算法规则将所述 关键字字符串片段生成关键字树,所述关键字树的每个节点都包含至少一个 关键字字符串片段,该节点的分支条件是另 一个关键字字符串片段;步骤2, 4艮据才莫式字符串中的特殊符号或者根据语言结构将用户输入的 待处理字符串划分成至少一个待处理字符串片段,作为状态机的输入;步骤3,由所述状态机根据所述现有匹配算法将所述待处理字符串片段 在所述关键字树节点中进行匹配操作;步骤4,如果在匹配的所述关键字树节点的数据结构中具有模式匹配成 功的标志,则记录或者输出该匹配的模式ID;步骤5,如果所有所述待处理的字符串片段处理完毕,则结束,否则在 所述状态机中处理下一个所述待处理字符串片段,重复步骤3-5。所述步骤3中,使用哈希算法或者二分法将待处理字符串片段与节点分
支条件进行字符串之间的匹配。 还包括一排序步骤,在步骤1中,将待处理字符串分革更后,由一排序单元将所述关键字字符串片^殳4安照预定的顺序排序,并输入所述编译器,由所述编译器生成关4建字 树;在步骤2中,将待处理字符串分割成至少一个待处理字符串片段后,由 所述排序单元将所述待处理字符串片段按照所述预定顺序输入所述状态机, 以进行步骤3至步骤5。还包括一合并步骤在步骤l中,将模式字符串分段后,按照下述合并规则由一合并单元将 所述关键字字符串片段合并成新的关键字字符串片段将所述关键字树同一 支路中相邻的只具有一个分支的节点合并;或者将上述合并的节点与其最后 一个节点相邻的,并且具有至少两个分支的节点合并;合并后输入所述编译 器,由编译器重新生成关键字树;在步骤2中,将待处理字符串分段后,按照上述合并规则,由所述合并 单元将所述待处理字符串片段合并成由至少一个待处理字符串片段组成的 新的待处理字符串片段,作为所述状态机的输入。还包括一合并步骤在步骤l中,将所述关键字字符串片段排序后,按照下述合并规则由一 合并单元将所述关键字字符串片段合并成新的关键字字符串片段将所述关 键字树同一支路中相邻的只具有一个分支的节点合并;或者将上述合并的节 点与其最后一个节点相邻的,并且具有至少两个分支的节点合并;合并后输 入所述编译器,由编译器重新生成关键字树;在步骤2中,将所述待处理字符串片段排序后,按照上述合并规则由所 述合并单元将所述待处理字符串片段合并成由至少一个待处理字符串片段 组成的新的待处理字符串片段,作为所述状态机的输入。所述预定顺序包括,按照所述关键字字符串片段和所述待处理字符串片 段读入的先后顺序,或者片段的语法结构进行排序,排序后所述键字字符串 片段和所述待处理字符串片段的顺序相同。一种分段模式匹配装置,包括,分段器,用于根据根据模式字符串中的特殊符号或者根据语言结构将模
式字字符串和待处理字符串分段;编译器,与状态才M目连接,用于将所述关键字字符串片段生成关键字树;所述状态机,接收所述分段器传送的待处理字符串片段,利用现有匹配 算法将所述待处理字符串片段在所述关键字树节点中进行匹配操作;输出单元与所述状态机相连接,用于输出与所述待处理字符串的匹配模 式编号。还包括一排序单元,用于将由所述分段器输出的至少2个待处理字符串 片段和所述关键字字符串片段按照预定顺序分别进行排序,将排序后的所述 待处理字符串片段输入所述状态机,将排序后的所述关键字字符串片段输入 所述编译器。还包括一合并单元,用于合并所述待处理字符串片段并传送给所述状态 机,合并所述关键字字符串片段并传送给所述编译器。还包括一合并单元,用于合并所述经过排序单元的待处理字符串片段, 并传送给所述状态机,合并所述经过排序单元的关键字字符串片段,并传送 给所述编译器。本发明的有益效果在于,能够更快速的模式匹配,并且节省存储器,更 快速的模式匹配收敛速度。


图1为现有AC算法的模式匹配集合示意图;图2为本发明模式匹配第一实施例示意图;图3为本发明分^殳才莫式匹配装置示意图;图4为本发明模式匹配第二实施例示意图;图5为本发明模式匹配第三实施例示意图;图6为本发明加入排序单元和合并单元的装置示意图。
具体实施方式
下面,结合附图对于本发明进行如下详细说明。在通常的模式匹配问题中,通配符可以代表许多任意的字符。根据请求 注解文档RFC2396 (Request for Comments Document 2396)中说明的URL, 我们能够基于片段的形式看到URL字符串,该字符串可以看作是以"."和"/"
区分的,由分隔符"."或者"/"分开的子字符串成为一个片段。对于HTTP的 URL (或其他一些类似的协议)过滤应用中,模式可能只是定义在基本片段 中的过滤条件。还例如IP地址,或者介质访问控制MAC地址之类的数据, 同样也可以认为是格式化的字符串,IP地址101.102.103.104,根据"."将它们 的模式分段。换句话说,通配符在模式中可以代表许多任意的片段,而不仅 仅是字符。本发明所利用的现有匹配算法不限制于现有的AC匹配算法,也可以使 用其他的匹配方法,例如确定性有限状态机DFA(deterministic Finite Automaton)匹酉己算法。如图2所示为本发明模式匹配第一实施例示意图。虚线方框内的是匹配 的模式。规定一组模式PI: Vmovie/*P2: Vmusic/*P3: "root/public/*P4: */movie/comedy/*叶节点上为关键字片段或关键字片段的组合,例如/root/和/public/都为关 键字片段,节点/root/的分支条件为关键字片段/public/,而在/root/下一级的 子节点为关键字片段的组合/root/public/,该节点代表一个路径。例如,一 个待处理URL字符串为"/root/movie/comedy/laura.mpeg",图2所示的关键字 集合为{/movie/, /music/, /movie/comedy/, /root/public/},其中各个节点都代 表一个或者数个模式的前缀。通过将输入字符串片段与当前节点状态的分支 进行比较而得到下一个节点,并修改着状态机的状态。首先,由编译器根据 关键字集合生成关键字树。状态机处于"idle"空闲状态,当输入URL字符串, 第一个待处理字符串片段为"/root/",这个片段将会被提取出来,与"/music/", "/movie/"和"/root/"三个分支相比较,状态机比较的结果将状态机的状态修 改为"/root/"。第二个待处理字符串片段为"/movie/",从"/root/"状态所对应节 点的分支条件中并不包括"/movie/"片段, 一个失败函数在这里被用来将当前 状态位改变为"idle,,状态,而这种回滚的操作是现有匹配算法中就已经存在, 例如AC匹配算法,根据整个关键字树的特征计算出来。在本例中回滚到关 键字树根节点重新开始比较,结果将状态机的状态改为匹配关键字 "/movie/",生成关键字树时在/movie/节点中的数据结构中定义一标志位,代 表该节点为 一模式P1 ,当匹配到"/movie/"时输出这个模式P1 。再处理第三 个待处理字符串片段"/comedy/",由于在"/movie/"状态对应节点的分支中存 在这样的匹配片段/ comedy /,对应的节点关键字片段为"/movie/comedy/", 所以^M犬态才几的^)犬态》爹改为匹配关4定字片段"/movie/comedy/",即路径为 "/movie/comedy/",生成关键字树时在/ movie/comedy /关键字片段节点中定 义一标志位,代表该节点为模式P4,并输出该模式P4。第四个待处理字符 串片段为"/laura",由于没有相应的分支对应该片段,则由失败函数将状态机 的状态修改为"idle"。对第五个待处理字符串片段".mpeg"的处理结果状态机 的状态依然是"idle"。最后,输入的整个URL字符串只有两个匹配关键字, "/movie/"和"/movie/隱edy/"。输出的模式ID为Pl和P4。其中,待处理 字符串片段与关键字字符串片段进行比较时,先将字符串片段利用某一种哈 希算法计算成数值,再将待处理字符串片段的数值与关键字字符串片段数值 进行比较,这样避免了片段之间逐字符的比较,加快了匹配速度。同样也可 以使用现有技术中其他的字符串比较方法,例如二分法等。本发明方法不仅可以适用于拼音类文字分段模式匹配,还可以适用于双 字节字符,例如中文编码,由于发明并不是基于字节,无论是单字节的英文 单词,还是双字节的中文字,所有的分段都可以被识别为串行位。用例如"/"、 "."或者空格等作为分隔符,将字符串分段。如图3所示为本发明第一实施例信号流图。在处理过程中,将要#:处理的字符串,例如URL等字符串,处理结束后输出的是输入字符串的最佳匹 配模式ID。首先将模式集合(P1,P2,P3…)传送至分段器,根据分隔符对模式 集中的每一个模式分段,将上述关键字片段传送给编译器,由该编译器根据 现有的匹配算法(例如标准AC匹配算法)生成关键字树,其中关键字树的 每一个节点的分支条件为所述分段后的字符串片段,该节点的数据结构中包 含表示跳转、分支信息、模式匹配命中标识符等信息的数据结构。然后将待 处理的字符串输入分段器,根据字符串中的特殊字符将待处理字符串分割成 几段输入状态机,在状态机的操作下将分段后的字符串与关键字树节点的分 支条件进行匹配,与哪个关键字树节点分支条件相匹配则跳转到相应的下一 个节点,如果没有匹配的分支条件则根据现有匹配算法的失败函数跳转到其 他节点,直到待处理字符串匹配处理完毕,得到最合适的匹配模式,并且将 该模式的ID输出,外界的功能实体以进行进一步对用户输入的字符串进行
处理,例如,将该模式与预定的规则比较,如果相同则禁止执行该该字符串 所代表的任务。作为进一步的实施例,本发明将至少两个待处理字符串片段和关键字片 段进行顺序排列以加速匹配。通常分段后的待处理字符串的各段有一定的特定意义,根据实际处理目的,可以对各段进行优先顺序排序。比如 一个提 问"你叫什么名字?,,,回答一般都是"我叫XX",这个回答的模式匹配可以 利用语言的结构特点(例如通过区分谓语"叫"的前后),分为"我","叫" 和"XX";通常我们可以认为在这几个片段中,其优先顺序是"XX"、"我"、 "叫"。对于"What is your name ",回答一般为,VMy name/is/XX/",这个回答 可以使用"/"作为通配符进行分段,同样也可以利用结构特点(is)区分,分 解出"Myname", "is", "XX",同样我们可以设定其优先顺序为"XX"、 "Myname"、和"is"。下面的例子详细描述了本发明按照优先顺序将待处理字 符串进行匹配的处理过程。如图4为本发明第二实施例根据关键字片段重要性排序后的关键字树示 意图。针对于"What is your name ,,对话答复有四个可能模式匹配PI: /My name /is/ Jack/;P2: /My name /is/ Mary/;P3: /My name /was/ Martin/;P4: /My name /is/ Martin/;在关键字树生成阶段,首先通过分段器对以上可能模式根据实际结构进 行分段(例如主/谓/宾),然后通过排序单元根据实际各段意义的重要性进 行排序,可以通过在每个关键字片段读入的先后顺序,或者各片段的语法结 构进行排序,语法结构可以是自然语言的,也可以是针对于某种标准的(例 如,URL语法标准),判断每个片段的语法位置,在本例中可以认为各段的 重要性顺序为宾/主/谓,生成新的等效的^t式匹配为PI: / Jack/My name /is/;P2: / Mary/My name /is/;P3: / Martin/My name /was/;P4: / Martin/My name /is/;根据以上模式匹配中关键字的顺序,由编译器以段为单位,按现有模式 匹配算法(例如标准AC匹配算法)将关键字片段生成关键字树,结果如图4所示。假设待处理字符串为'7Myname/is/Martin/"。首先根据生成模式Pl-P4 时的约定进行分IS:,在本例中根据"/"分段,分成/Myname/、 /is/和/Martin/ 三段。然后根据各片段的语法结构进行排序,或者根据输入的顺序进行排序, 排序的结果与关键字字符串片段的顺序一致,得到新的待处理字符串/ Martin/、 /is/和/my name/。然后以段为单位,从idle状态开始利用现有匹配 算法(例如标准AC匹配算法)搜索关键字树。在本例中,将会在节点的分 支条件中先后找到/Martin/ 、 /My name/和/is/三个字符串片段,预先在最 后一个节点数据结构中的标志位标明相应的模式ID,输出其标号P4。作为可选的,如图5所示为本发明第三实施例合并关键字片段后的关键 字树示意图。在合并单元进行判断关键字树的"/Jack/"节点后到树叶节点的分 支,如果只有一个分支,则将后续分段合并,并在该节点的数据结构中提供 额外的描述,表明该后续节点是由后面2个或者多个节点合并而成。本例中 "/Jack/"节点后的'7My name/"和"/is/"合并,形成"/Jack/"节点新的分支条件 "/Myname/is/"; '7Mary/"节点后的"/Myname/"和"/is/"合并,形成"/Mary/"节 点新的分支条件"/My name/ is/",同时在/Jack/和/Mary/节点标明该后续节点 由2个分段组成;其他节点不变,由编译器接收上述合并单元的处理结果生 成新的关键字树如图5所示。假设实际待处理字符串为'7My name/is/Mary/",根据前面的分段、排序 规则,待处理字符串片段为/Mary八/Myname八/is/。在状态机查关键字树时,在每一个节点,首先需要判断该后续节点是由 几个段构成,然后从待处理字符串片段中取出相应个数的片段,传送给合并 单元进行合并处理,重新组成状态机的输入,进行精确匹配。在本例中,idle 状态后续输入只有1个关键字片段组成的分支条件,因此取'7Mary/"作为输 入,然后比较,得到一个节点'7Mary/",转移状态机的状态为"/Mary/",并且 下 一个匹配操作是将输入字符串片段与"/Mary/"节点后面的分支条件进行比 较,在"/Mary/"节点的数据结构中发现该后续节点由2个片段组成,因此再 读入后续的两个待处理字符串片段组成新的片段"/My name/is/",进行比较, 发现匹配,而且命中匹配模式P2.返回匹配的结果P2。作为另 一种实施例,在关键字树中合并的关键字片段不限于以上描述, 可以是在整个关键字树的同一支路中任意几个连续的只具有一个分支的节 点相合并,该合并还可以包括紧接着合并末尾节点的具有多个分支的节点。 根据合并的规则重新由编译器生成关键字树。如图6所示为本发明加入重新排序单元和合并单元的装置示意图。与图 3相比,增加一个排序单元,连接于状态机与分段器之间,不仅将待处理字 符串分段后的片段进行排序,而且将关键字片段进行相应排序,将某些重要 的字符串片段在待处理字符串片段中优先处理,以便进行模式匹配时加快处 理速度。本图中,还包括一合并单元,连接于排序单元与状态机之间,用于 将关键字树中的某些节点合并,其处理结果输入编译器以生成新的关键字 树,并且根据关键字树节点数据结构中关于后继节点合并的信息,将待处理 字符串片段中后继的几个片段合并作为状态机的输入。所述排序单元和合并 单元并不是必须同时存在的,可以单独使用其中一个或者一起使用,用于加 快模式匹配的速度和优化系统性能。通过本发明的方法能够缩短搜索速度,并且不需要大量的存储空间。对于AC算法的关键字树来说,如果要避免回滚函数的操作,则需要针 对每一个可能分支都存储下一节点的信息,就形成了 DFA算法。于是对于 整个状态机的转换表要求的存储空间为(flog2 ■$■"]+「log2 w"j)xc , C 为在DFA算法中输入的字符数,n为模式的个 数,s为状态的个数;以上公式在M. Aldwairi, T. conte和P. Franzon在"用于加速侵入窃密检测 的可配置字符串匹配硬件"中描述。其中"tz,, /,为模式Z的长度。假设有fi)00个模式,每个模式有128 byte长,因此,p128尺。每个状 态都将有一个哈希表,用于查询过渡状态,该表中包括其子节点信息。在每 个合法的URL地址中,有将近c=80个字符,那么每个状态的表都将会有80 个字符,最后AC算法所需要的存储空间为M^61M5。对于本发明方法来说,假设模式的长度有IO个片段。因此,"10尺, 每一个片段的长度为12.8 byte,每个状态的哈希表或者内容寻址存储器 (CAM)被用于查询转变条件。每一种转变条件,需要的存储单元包括6byte 的下个状态信息,和用于比较的整个片段的12.8byte。所以,如果应用了 CAM 整个需要的存储空间为M S 18.8xlOK = 。使用哈希表必须事先制定表的大 小,如果需要比较小的沖突概率的话,表格的大小要大于所含有的元素的个
数,为了便于估计所需要的整个内存空间的大小,假设哈希表的大小是所含 有的表项数目的两倍,那么存储空间为M《18.8xl0《x2-376/:5。这两个数据 与现有的DFA算法相比较都是非常小的,所以本发明方法在存储空间上来 说是很有优势的。本发明方法大大提高了搜索速度,搜索速度的提高在于在每一步时都需 要很短的时间里得到下一状态,和需要几步才能完成。 一般的方式,是通过 为状态机提供哈希表,每一步的时间就是存储单元的访问时间,对于DFA 算法来说,由于需要使用很大的存储器,所以目前只有类似DDRRAM的存 储器才能满足速度和容量上的要求,如果访问速度在40纳秒左右,搜索URL 字符串的速度可以达到200Mbps。当应用本发明方法,只需要很少的存储空 间,可以使用内容寻址存储器(CAM),如杲访问速度在10纳秒左右,那么 搜索速度可以达到8 Gbps。如果在SRAM中应用哈希表进行转变计算,10 个访问都查询哈希表,每一个访问时间为5纳秒左右,那么搜索速度可以达 到4Gbps。由此可见,采用本发明方法的搜索速度比传统的DFA算法快很多。本发明的有益效果在于,能够更快速的模式匹配,并且节省存储器,更 快速的滤除收敛速度,应用于防火墙等应用中能够大幅度的提高其性能。以上具体实施方式
仅用于说明本发明,而非用于限定本发明。
权利要求
1.一种分段模式匹配方法,其特征在于,步骤1,根据模式字符串中的特殊符号或者根据语言结构将模式字符串划分成至少一个关键字字符串片段,由编译器利用现有匹配算法规则将所述关键字字符串片段生成关键字树,所述关键字树的每个节点都包含至少一个关键字字符串片段,该节点的分支条件是另一个关键字字符串片段;步骤2,根据模式字符串中的特殊符号或者根据语言结构将用户输入的待处理字符串划分成至少一个待处理字符串片段,作为状态机的输入;步骤3,由所述状态机根据所述现有匹配算法将所述待处理字符串片段在所述关键字树节点中进行匹配操作;步骤4,如果在匹配的所述关键字树节点的数据结构中具有模式匹配成功的标志,则记录或者输出该匹配的模式ID;步骤5,如果所有所述待处理的字符串片段处理完毕,则结束,否则在所述状态机中处理下一个所述待处理字符串片段,重复步骤3-5。
2. 根据权利要求1所述的一种分段模式匹配方法,其特征在于所述步 骤3中,使用哈希算法或者二分法将待处理字符串片段与节点分支条件进行 字符串之间的匹配。
3. 根据权利要求1所述的一种分段模式匹配方法,其特征在于还包括 一排序步骤,在步骤1中,将待处理字符串分段后,由一排序单元将所述关键字字符 串片段按照预定的顺序排序,并输入所述编译器,由所述编译器生成关键字 树;在步骤2中,将待处理字符串分割成至少一个待处理字符串片段后,由以进行步骤3至步骤5。
4. 根据权利要求1所述的一种分段模式匹配方法,其特征在于还包括 一合并步骤在步骤l中,将模式字符串分段后,按照下述合并规则由一合并单元将 所述关键字字符串片段合并成新的关键字字符串片段将所述关键字树同一 支路中相邻的只具有一个分支的节点合并;或者将上述合并的节点与其最后 一个节点相邻的,并且具有至少两个分支的节点合并;合并后输入所述编译 器,由编译器重新生成关键字树;在步骤2中,将待处理字符串分段后,按照上述合并规则,由所述合并 单元将所述待处理字符串片段合并成由至少一个待处理字符串片段组成的 新的待处理字符串片段,作为所述状态机的输入。
5. 根据权利要求3所述的一种分段模式匹配方法,其特征在于还包括 一合并步骤在步骤l中,将所述关键字字符串片段排序后,按照下述合并规则由一 合并单元将所述关键字字符串片段合并成新的关键字字符串片段将所述关 键字树同一支路中相邻的只具有一个分支的节点合并;或者将上述合并的节 点与其最后一个节点相邻的,并且具有至少两个分支的节点合并;合并后输 入所述编译器,由编译器重新生成关键字树;在步骤2中,将所述待处理字符串片段排序后,按照上述合并规则由所 述合并单元将所述待处理字符串片段合并成由至少 一个待处理字符串片段 组成的新的待处理字符串片段,作为所述状态机的输入。
6. 根据权利要求3所述的一种分段模式匹配方法,其特征在于所述预 定顺序包括,按照所述关键字字符串片段和所述待处理字符串片段读入的先 后顺序,或者片段的语法结构进行排序,排序后所述键字字符串片段和所述 待处理字符串片段的顺序相同。
7. —种分段模式匹配装置,其特征在于包括,分段器,用于根据模式字符串中的特殊符号或者根据语言结构将模式字 字符串和待处理字符串分段;编译器,与状态才;i4目连接,用于将所述关键字字符串片段生成关键字树;所述状态机,接收所述分段器传送的待处理字符串片段,利用现有匹配 算法将所述待处理字符串片段在所述关键字树节点中进行匹配操作;输出单元与所述状态机相连接,用于输出与所述待处理字符串的匹配模 式编号。
8. 根据权利要求7所述的一种分段模式匹配装置,其特征在于还包括 一排序单元,用于将由所述分段器输出的至少2个待处理字符串片段和所述 关键字字符串片段按照预定顺序分别进行排序,将排序后的所述待处理字符 串片段输入所述状态机,将排序后的所述关键字字符串片段输入所述编译 器。
9. 根据权利要求7所述的一种分段模式匹配装置,其特征在于还包括 一合并单元,用于合并所述待处理字符串片段并传送给所述状态机,合并所 迷关键字字符串片段并传送给所述编译器。
10. 根据权利要求7所述的一种分段模式匹配装置,其特征在于还包括 一合并单元,用于合并所述经过排序单元的待处理字符串片段,并传送给所 述状态机,合并所述经过排序单元的关键字字符串片段,并传送给所述编译 器。
全文摘要
本发明涉及字符串模式匹配,具体的讲是一种分段模式匹配方法及其装置。为了解决现有模式匹配的资源消耗大,硬件要求高的缺点,本发明方法为,根据预定规则将关键字字符串分割成至少一个关键字字符串片段,将所述关键字字符串片段生成关键字树;根据所述预定规则将用户输入的待处理字符串分割成至少一个待处理字符串片段,作为状态机的输入;由所述状态机根据AC匹配算法将所述待处理字符串片段在所述关键字树节点中进行匹配操作,每个节点分支的判断条件都是所述关键字字符串片段;如果所述待处理字符串片段匹配成功,则返回该匹配的模式ID。本发明的有益效果在于,能够提高字符串模式匹配的效率,并且降低了对硬件资源的要求。
文档编号G06F17/30GK101154228SQ200610159310
公开日2008年4月2日 申请日期2006年9月27日 优先权日2006年9月27日
发明者张若渊, 阙开良 申请人:西门子公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1