CN100568239C - 一种模式匹配方法及装置 - Google Patents

一种模式匹配方法及装置 Download PDF

Info

Publication number
CN100568239C
CN100568239C CNB2006101414847A CN200610141484A CN100568239C CN 100568239 C CN100568239 C CN 100568239C CN B2006101414847 A CNB2006101414847 A CN B2006101414847A CN 200610141484 A CN200610141484 A CN 200610141484A CN 100568239 C CN100568239 C CN 100568239C
Authority
CN
China
Prior art keywords
cbm
pattern
key word
key
character string
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.)
Expired - Fee Related
Application number
CNB2006101414847A
Other languages
English (en)
Other versions
CN101154225A (zh
Inventor
张若渊
阙开良
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nokia Solutions and Networks GmbH and Co KG
Original Assignee
Nokia Siemens Networks Oy
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nokia Siemens Networks Oy filed Critical Nokia Siemens Networks Oy
Priority to CNB2006101414847A priority Critical patent/CN100568239C/zh
Publication of CN101154225A publication Critical patent/CN101154225A/zh
Application granted granted Critical
Publication of CN100568239C publication Critical patent/CN100568239C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Machine Translation (AREA)

Abstract

本发明涉及计算机领域,具体的讲是一种模式匹配方法及装置,为了解决在模式的多个关键字之间不连续的模式匹配问题,本发明方法将多个不连续的关键字分段,用布尔型映射表分别记录每个模式中出现同一关键字的信息,经过本发明的算法获得与待处理字符串匹配的模式。经过简单的算法使计算机对不连续关键字的模式进行识别,成本低,并且处理速度很快。

Description

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

Claims (7)

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个映射串BM1、...、BMn构成,其中n为上述模式集合中的一个模式的段数,n=2,3...,该映射表中的n个映射串与一个模式中的n个段一一对应,所述每一个映射串都由m个布尔型数值组成,其中m与所述模式集合中模式的数量相等,m=1,2,3...;在每一个所述映射串的第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进行“与”操作,最后由布尔型数值构成的结果代表了与所述待处理字符串相匹配的模式编号,将所述模式编号传送给输出单元;
所述输出单元输出上述模式编号。
6.根据权利要求5所述的一种模式匹配装置,其特征在于,在所述处理单元与输出单元之间还具有一优选单元,按照预先设定的每个模式编号的优先级,将优先级最高的模式编号输出。
7.根据权利要求5所述的一种模式匹配装置,其特征在于,所述分段器根据元关键字字符串中的特殊字符将所述元关键字再分段,输入所述编译器,并且所述分段器根据上述特殊字符将所述待处理字符串分段后输入所述状态机。
CNB2006101414847A 2006-09-29 2006-09-29 一种模式匹配方法及装置 Expired - Fee Related CN100568239C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2006101414847A CN100568239C (zh) 2006-09-29 2006-09-29 一种模式匹配方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2006101414847A CN100568239C (zh) 2006-09-29 2006-09-29 一种模式匹配方法及装置

Publications (2)

Publication Number Publication Date
CN101154225A CN101154225A (zh) 2008-04-02
CN100568239C true CN100568239C (zh) 2009-12-09

Family

ID=39255886

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006101414847A Expired - Fee Related CN100568239C (zh) 2006-09-29 2006-09-29 一种模式匹配方法及装置

Country Status (1)

Country Link
CN (1) CN100568239C (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102467563A (zh) * 2010-11-19 2012-05-23 金蝶软件(中国)有限公司 数据检索方法和系统
CN102073626A (zh) * 2010-12-30 2011-05-25 周军 气象报文智能匹配规则
CN103853722B (zh) * 2012-11-29 2017-09-22 腾讯科技(深圳)有限公司 一种基于检索串的关键词扩展方法、装置和系统
CN104462758B (zh) * 2014-11-03 2017-05-24 百度在线网络技术(北京)有限公司 观测字符串的标注序列生成方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
一种高效海量字符串集合的模式匹配算法. 张建勋,吴建国.计算机工程与应用. 2004
一种高效海量字符串集合的模式匹配算法. 张建勋,吴建国.计算机工程与应用. 2004 *

Also Published As

Publication number Publication date
CN101154225A (zh) 2008-04-02

Similar Documents

Publication Publication Date Title
Chang et al. A survey of web information extraction systems
CN101154228A (zh) 一种分段模式匹配方法及其装置
US6826566B2 (en) Identifier vocabulary data access method and system
CN104809117B (zh) 视频数据聚合处理方法、聚合系统及视频搜索平台
JP2005222545A (ja) メタデータのインデックスの提供方法
CN101911042A (zh) 用户的浏览器历史的相关性排序
CN101976259A (zh) 一种推荐系列文档的方法和装置
CN104462553A (zh) 问答页面相关问题推荐方法及装置
CN112860727B (zh) 基于大数据查询引擎的数据查询方法、装置、设备及介质
CN101968788A (zh) 提取商品属性信息的方法和设备
CN100568239C (zh) 一种模式匹配方法及装置
CN107038026A (zh) 一种增量式的自动机更新方法与系统
TW201415254A (zh) 語意標註建議方法及其系統
CN100456293C (zh) 一种信息快捷搜索客户端、系统及方法
US20200311151A1 (en) Document structures for searching within and across messages
Newsam et al. Category-based image retrieval
CN101248433B (zh) 具有签名产生及关联性检测的匹配引擎
EP4136640A1 (en) Method and system for the efficient data compression in mpeg-g
Maaradji et al. Social web mashups full completion via frequent sequence mining
CN115048913A (zh) 一种命令处理方法、装置和电子设备
CN101183394A (zh) 一种订阅下载的方法及装置
JPH11338873A (ja) 再検索方法及び装置及び再検索プログラムを格納した記憶媒体及び追加検索語候補提示方法及び装置及び追加検索語候補提示プログラムを格納した記憶媒体
CN113934430A (zh) 数据检索分析方法、装置、电子设备及存储介质
JP3591813B2 (ja) データ検索方法、その装置および記録媒体
Ajwani et al. TubeExtractor: a crawler and converter for generating research dataset from YouTube videos

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20080321

Address after: Munich, Germany

Applicant after: Nokia Siemens Networks

Address before: Munich, Germany

Applicant before: Siemens AG

C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C56 Change in the name or address of the patentee

Owner name: NOKIA COMMUNICATION GMBH + CO. KG

Free format text: FORMER NAME: NOKIA SIEMENS NETWORKS

CP01 Change in the name or title of a patent holder

Address after: Munich, Germany

Patentee after: NOKIA SIEMENS NETWORKS GMBH & CO. KG

Address before: Munich, Germany

Patentee before: Nokia Siemens Networks

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20091209

Termination date: 20150929

EXPY Termination of patent right or utility model