CN101388044A - 匹配规则包含或运算符的并行多模式匹配的方法及系统 - Google Patents
匹配规则包含或运算符的并行多模式匹配的方法及系统 Download PDFInfo
- Publication number
- CN101388044A CN101388044A CNA2008102255635A CN200810225563A CN101388044A CN 101388044 A CN101388044 A CN 101388044A CN A2008102255635 A CNA2008102255635 A CN A2008102255635A CN 200810225563 A CN200810225563 A CN 200810225563A CN 101388044 A CN101388044 A CN 101388044A
- Authority
- CN
- China
- Prior art keywords
- rule
- sub
- matched
- matched rule
- matching
- 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.)
- Pending
Links
Images
Abstract
本发明公开了一种匹配规则包含或运算符的并行多模式匹配的系统及方法,系统包括:生成模块,用于读取包含匹配规则的规则集,将所述规则集中包含或运算符的匹配规则从或运算符处分割成所述匹配规则的子规则,所述子规则为确定规则,所述规则集中为确定规则的匹配规则作为其自身的子规则,并将所有子规则按照AC算法生成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”,其中或运算符“|”表示搜索对象同子模式“334566”或“990000”中的至少一个匹配成功,则整个模式即为匹配成功,则上述发明则无法处理。
发明内容
为解决上述问题,本发明提供了一种匹配规则包含或运算符的并行多模式匹配的方法及系统,从而能够应用AC算法对包含有或运算符的匹配规则进行匹配。
本发明公开了一种匹配规则包含或运算符的并行多模式匹配的系统,包括:
生成模块,用于读取包含匹配规则的规则集,将所述规则集中包含或运算符的匹配规则从或运算符处分割成所述匹配规则的子规则,所述子规则为确定规则,所述规则集中为确定规则的匹配规则作为其自身的子规则,并将所有子规则按照AC算法生成AC自动机;
匹配模块,用于读取搜索对象,按AC算法应用所述AC自动机进行搜索,判断所述搜索对象是否匹配所述匹配规则的至少一个子规则,如果是,则所述搜索对象匹配所述匹配规则,并输出匹配结果。
所述生成模块进一步包括规则解析模块和节点处理模块,
所述规则解析模块,用于进行所述将所述规则集中包含或运算符的匹配规则从或运算符处分割成所述匹配规则的子规则,所述规则集中为确定规则的匹配规则作为其自身的子规则,并将所有子规则按照AC算法生成AC自动机的过程,并在确定所述匹配规则的子规则后,标识所述匹配规则的子规则;
所述节点处理模块,用于生成节点规则表,所述节点规则表记录在所述AC自动机中的终态节点处匹配的所有子规则标识,以供所述匹配模块在搜索时进行查找;
所述在确定所述匹配规则的子规则后,标识所述匹配规则的子规则进一步为标识所述匹配规则,并使用所述子规则所属匹配规则的标识来标识所述子规则。
所述匹配模块进一步包括
状态转移模块,用于进行所述读取搜索对象,按AC算法应用所述AC自动机进行搜索的过程;
处理模块,用于查找所述节点规则表,依次获得当前终态节点匹配的子规则的标识,确定所述搜索对象同当前终态节点匹配的子规则所属的匹配规则匹配,并输出该匹配规则的标识。
本发明还公开了一种匹配规则包含或运算符的并行多模式匹配的方法,包括:
步骤1,读取包含匹配规则的规则集,将所述规则集中包含或运算符的匹配规则从或运算符处分割成所述匹配规则的子规则,所述子规则为确定规则,所述规则集中为确定规则的匹配规则作为其自身的子规则,并将所有子规则按照AC算法生成AC自动机,并输出所述AC自动机;
步骤2,读取搜索对象和所述AC自动机,按AC算法应用所述AC自动机进行搜索,判断所述搜索对象是否匹配所述匹配规则的至少一个子规则,如果是,则所述搜索对象匹配所述匹配规则,并输出匹配结果。
所述步骤1进一步包括,
步骤61,在确定所述匹配规则的子规则后,标识所述匹配规则的子规则;
步骤62,在生成所述AC自动机后,生成节点规则表,记录在所述AC自动机中的终态节点处匹配的所有子规则标识,以供在搜索时进行查找;
所述步骤61进一步为标识所述匹配规则,并使用所述子规则所属匹配规则的标识来标识所述子规则。
所述步骤2进一步包括,
步骤81,读取搜索对象的一个字符,按所述AC算法进行在所述AC自动机中进行状态转移,转移到一个状态节点,执行步骤82;
步骤82,判断该状态节点是否是终态节点,如果是,查找所述节点规则表,依次获得匹配的子规则标识,确定所述搜索对象同当前终态节点匹配的子规则所属的匹配规则匹配,并输出该匹配规则的标识,执行步骤81直至所述搜索对象被读取完。
本发明的有益效果在于,通过将含有或运算符的匹配规则在或运算符处分割成子规则,使得AC算法可以用于包含或运算符的匹配规则,进而实现对含有或运算符的匹配规则的并行多模式匹配。
附图说明
图1是本发明的系统结构示意图;
图2是本发明的方法流程图;
图3是本发明的自动机生成模块结构示意图;
图4是本发明的匹配模块结构示意图;
图5是本发明方法具体实施例的流程图。
具体实施方式
下面结合附图,对本发明做进一步的详细描述。
本发明系统,包括生成模块101和匹配模块102组成,如图1所示。
生成模块101,用于读取包含或运算符的匹配规则的规则集,将该规则集中包含或运算符的匹配规则从或运算符处分割成该匹配规则的子规则,该子规则为确定规则,规则集中为确定规则的匹配规则作为其自身的子规则,将规则集中匹配规则用该匹配规则的子规则替换,从而使替换后的规则集中包含的匹配规则都为确定规则,按照AC算法生成对应于替换后的规则集的AC自动机,对于为确定规则的匹配规则,由于其子规则是其自身,所以规则集中为确定规则的匹配规则可以不做替换直接保留。
所述确定规则,是规则中每个字符都已知,不包含不明确的字符,所述不确定的字符如通配符或或运算符。
匹配模块102,用于读取搜索对象,按AC算法应用所述AC自动机进行搜索,判断该搜索对象是否匹配匹配规则中的至少一个子规则,如果是,则所述搜索对象匹配该匹配规则,并输出匹配结果。
本发明的方法如图2所示,包括:
步骤S201,读取包含或运算符的匹配规则的规则集,将该规则集中包含或运算符的匹配规则从或运算符处分割成该匹配规则的子规则,该子规则为确定规则,规则集中为确定规则的匹配规则作为其自身的子规则,将规则集中匹配规则用该匹配规则的子规则替换,从而使替换后的规则集中包含的匹配规则都为确定规则,按照AC算法生成对应于替换后的规则集的AC自动机,并输出AC自动机,对于为确定规则的匹配规则,由于其子规则是其自身,所以规则集中为确定规则的匹配规则可以不做替换直接保留。
步骤S202,读取搜索对象,按AC算法应用AC自动机进行搜索,判断该搜索对象是否匹配规则中的至少一个子规则,如果是,则所述搜索对象匹配该匹配规则,并输出匹配结果。
生成模块101还用以生成节点规则表。
生成模块101包括,规则解析模块301和节点处理模块302,如图3所示。
规则解析模块301,用于逐条判断规则集中的匹配规则是否包含或运算符,如果包含,则查找匹配规则中或运算符的位置,在或运算符位置处将匹配规则分割为子规则,该子规则为确定规则;如果不包含并且匹配规则为确定规则,则该匹配规则作为其自身的子规则,将规则集中的匹配规则用该匹配规则的子规则替换,使规则集转换为仅包含确定规则的规则集,并用子规则所属的匹配规则的标识来标识该子规则。
例如,一个匹配规则为“334566|990000”,标识该匹配规则为23,该规则包含一个或运算符“|”,说明只要与子规则“990000”或与子规则“334566”中至少一个匹配成功即可。该规则被分割为两个子规则“334566”和“990000”,它们的子规别标识均为“23”。又如,一个不含或运算符的匹配规则“323457789”标识为24,则该匹配规则的子规则标识仍为“24”。
节点处理模块302,用于生成节点规则表,记录在所述AC自动机中的终态节点处匹配的所有子规则。具体实施方式为,对应于每个终态节点建立一个链表,链表中存有该终态节点对应的子规则标识。
匹配模块102包括,状态转移模块401和处理模块402,如图4所示。
状态转移模块401,用于应用AC自动机,根据读取的搜索对象的字符,按AC算法进行搜索。具体实施方式为:用一个整数S表示AC自动机的当前状态,初始时S为初始状态0,每读取一个搜索对象的字符,就在AC自动机中查找,确定下一状态,并修改S值为该状态。
处理模块402,用于在当前状态节点为终态节点时,查找节点规则表并依次输出当前终态节点匹配的子规则标识,确定所述搜索对象同当前终态节点匹配的子规则所属的匹配规则匹配,并输出该匹配规则的标识。
将该终态节点对应的所有子规则处理完后,读取下一个字符,按AC算法搜索。
本发明的方法的具体实施例如图5所示。
步骤S501,读取规则集。
步骤S502,标识所述规则集的匹配规则,判断规则集的匹配规则中是否包含或运算符,如果包含,在或运算符处将匹配规则划分成为确定规则的子规则,如果不包含并且匹配规则为确定规则,则所述匹配规则作为其自身的子规则,然后将所有子规则按AC算法生成AC自动机,并生成节点规则表。
节点规则表,记录在所述AC自动机中的终态节点处匹配的所有子规则,子规则用其所属匹配规则的标识来标识。
步骤S503,如果搜索对象已读取完毕,则结束流程,否则读取搜索对象的一个字符。
步骤S504,按AC算法转移状态。
步骤S505,判断状态节点是否为终态节点,如果是,执行步骤S506,否则,执行步骤S503。
步骤S506,查找节点规则表,获得该终态节点匹配的子规则的标识,确定所述搜索对象同当前终态节点匹配的子规则所属的匹配规则匹配,并输出该匹配规则的标识。
步骤S507,判断该终态节点处是否还有匹配的子规则,如果有,执行步骤S506,否则,执行步骤S503。
本领域的技术人员在不脱离权利要求书确定的本发明的精神和范围的条件下,还可以对以上内容进行各种各样的修改。因此本发明的范围并不仅限于以上的说明,而是由权利要求书的范围来确定的。
Claims (8)
1.一种匹配规则包含或运算符的并行多模式匹配的系统,其特征在于,包括:
生成模块,用于读取包含匹配规则的规则集,将所述规则集中包含或运算符的匹配规则从或运算符处分割成所述匹配规则的子规则,所述子规则为确定规则,所述规则集中为确定规则的匹配规则作为其自身的子规则,并将所有子规则按照AC算法生成AC自动机;
匹配模块,用于读取搜索对象,按AC算法应用所述AC自动机进行搜索,判断所述搜索对象是否匹配所述匹配规则的至少一个子规则,如果是,则所述搜索对象匹配所述匹配规则,并输出匹配结果。
2.如权利要求1所述的匹配规则包含或运算符的并行多模式匹配的系统,其特征在于,所述生成模块进一步包括规则解析模块和节点处理模块,
所述规则解析模块,用于进行所述将所述规则集中包含或运算符的匹配规则从或运算符处分割成所述匹配规则的子规则,所述规则集中为确定规则的匹配规则作为其自身的子规则,并将所有子规则按照AC算法生成AC自动机的过程,并在确定所述匹配规则的子规则后,标识所述匹配规则的子规则;
所述节点处理模块,用于生成节点规则表,所述节点规则表记录在所述AC自动机中的终态节点处匹配的所有子规则标识,以供所述匹配模块在搜索时进行查找。
3.如权利要求2所述的匹配规则包含或运算符的并行多模式匹配的系统,其特征在于,所述在确定所述匹配规则的子规则后,标识所述匹配规则的子规则进一步为标识所述匹配规则,并使用所述子规则所属匹配规则的标识来标识所述子规则。
4.如权利要求2所述的匹配规则包含或运算符的并行多模式匹配的系统,其特征在于,所述匹配模块进一步包括
状态转移模块,用于进行所述读取搜索对象,按AC算法应用所述AC自动机进行搜索的过程;
处理模块,用于查找所述节点规则表,依次获得当前终态节点匹配的子规则的标识,确定所述搜索对象同当前终态节点匹配的子规则所属的匹配规则匹配,并输出该匹配规则的标识。
5.一种匹配规则包含或运算符的并行多模式匹配的方法,其特征在于,包括:
步骤1,读取包含匹配规则的规则集,将所述规则集中包含或运算符的匹配规则从或运算符处分割成所述匹配规则的子规则,所述子规则为确定规则,所述规则集中为确定规则的匹配规则作为其自身的子规则,并将所有子规则按照AC算法生成AC自动机,并输出所述AC自动机;
步骤2,读取搜索对象和所述AC自动机,按AC算法应用所述AC自动机进行搜索,判断所述搜索对象是否匹配所述匹配规则的至少一个子规则,如果是,则所述搜索对象匹配所述匹配规则,并输出匹配结果。
6.如权利要求5所述的匹配规则包含或运算符的并行多模式匹配的方法,其特征在于,所述步骤1进一步包括,
步骤61,在确定所述匹配规则的子规则后,标识所述匹配规则的子规则;
步骤62,在生成所述AC自动机后,生成节点规则表,记录在所述AC自动机中的终态节点处匹配的所有子规则标识,以供在搜索时进行查找。
7.如权利要求6所述的匹配规则包含或运算符的并行多模式匹配的方法,其特征在于,所述步骤61进一步为标识所述匹配规则,并使用所述子规则所属匹配规则的标识来标识所述子规则。
8.如权利要求5所述的匹配规则包含或运算符的并行多模式匹配的方法,其特征在于,所述步骤2进一步包括,
步骤81,读取搜索对象的一个字符,按所述AC算法进行在所述AC自动机中进行状态转移,转移到一个状态节点,执行步骤82;
步骤82,判断该状态节点是否是终态节点,如果是,查找所述节点规则表,依次获得匹配的子规则标识,确定所述搜索对象同当前终态节点匹配的子规则所属的匹配规则匹配,并输出该匹配规则的标识,执行步骤81直至所述搜索对象被读取完。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008102255635A CN101388044A (zh) | 2008-11-05 | 2008-11-05 | 匹配规则包含或运算符的并行多模式匹配的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008102255635A CN101388044A (zh) | 2008-11-05 | 2008-11-05 | 匹配规则包含或运算符的并行多模式匹配的方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101388044A true CN101388044A (zh) | 2009-03-18 |
Family
ID=40477463
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2008102255635A Pending CN101388044A (zh) | 2008-11-05 | 2008-11-05 | 匹配规则包含或运算符的并行多模式匹配的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101388044A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101556619B (zh) * | 2009-05-04 | 2010-11-10 | 成都市华为赛门铁克科技有限公司 | 节点压缩方法及装置、以及多模匹配方法及装置 |
CN103488681A (zh) * | 2009-06-19 | 2014-01-01 | 布雷克公司 | 斜线标签 |
CN105045808A (zh) * | 2015-06-08 | 2015-11-11 | 北京天元特通科技有限公司 | 一种复合规则集匹配方法和系统 |
CN106487803A (zh) * | 2016-11-10 | 2017-03-08 | 深圳市任子行科技开发有限公司 | 用于大流量网络入侵检测系统的模式匹配算法和系统 |
US11294963B2 (en) * | 2019-05-31 | 2022-04-05 | Beijing Xiaomi Mobile Software Co., Ltd. | String matching method, string matching apparatus, storage medium, and electronic device |
CN115065577A (zh) * | 2022-05-30 | 2022-09-16 | 武汉市水务集团有限公司 | 一种应用于二次供水物联网的边缘计算网关系统 |
-
2008
- 2008-11-05 CN CNA2008102255635A patent/CN101388044A/zh active Pending
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101556619B (zh) * | 2009-05-04 | 2010-11-10 | 成都市华为赛门铁克科技有限公司 | 节点压缩方法及装置、以及多模匹配方法及装置 |
US10437808B2 (en) | 2009-06-19 | 2019-10-08 | International Business Machines Corporation | RAM daemons |
US11055270B2 (en) | 2009-06-19 | 2021-07-06 | International Business Machines Corporation | Trash daemon |
US11487735B2 (en) | 2009-06-19 | 2022-11-01 | International Business Machines Corporation | Combinators |
US9607085B2 (en) | 2009-06-19 | 2017-03-28 | International Business Machines Corporation | Hierarchical diff files |
US10877950B2 (en) | 2009-06-19 | 2020-12-29 | International Business Machines Corporation | Slashtags |
US10095725B2 (en) | 2009-06-19 | 2018-10-09 | International Business Machines Corporation | Combinators |
US11176114B2 (en) | 2009-06-19 | 2021-11-16 | International Business Machines Corporation | RAM daemons |
US11080256B2 (en) | 2009-06-19 | 2021-08-03 | International Business Machines Corporation | Combinators |
US10078650B2 (en) | 2009-06-19 | 2018-09-18 | International Business Machines Corporation | Hierarchical diff files |
US10997145B2 (en) | 2009-06-19 | 2021-05-04 | International Business Machines Corporation | Hierarchical diff files |
CN103488681A (zh) * | 2009-06-19 | 2014-01-01 | 布雷克公司 | 斜线标签 |
CN105045808B (zh) * | 2015-06-08 | 2018-11-02 | 北京天元特通科技有限公司 | 一种复合规则集匹配方法和系统 |
CN105045808A (zh) * | 2015-06-08 | 2015-11-11 | 北京天元特通科技有限公司 | 一种复合规则集匹配方法和系统 |
CN106487803A (zh) * | 2016-11-10 | 2017-03-08 | 深圳市任子行科技开发有限公司 | 用于大流量网络入侵检测系统的模式匹配算法和系统 |
US11294963B2 (en) * | 2019-05-31 | 2022-04-05 | Beijing Xiaomi Mobile Software Co., Ltd. | String matching method, string matching apparatus, storage medium, and electronic device |
CN115065577A (zh) * | 2022-05-30 | 2022-09-16 | 武汉市水务集团有限公司 | 一种应用于二次供水物联网的边缘计算网关系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101286988B (zh) | 一种并行多模式匹配的方法及系统 | |
CN101464905B (zh) | 一种网页信息抽取的系统及方法 | |
SaiKrishna et al. | String matching and its applications in diversified fields | |
TW200900958A (en) | Link spam detection using smooth classification function | |
CN101388044A (zh) | 匹配规则包含或运算符的并行多模式匹配的方法及系统 | |
Zou et al. | Locating and parsing bibliographic references in HTML medical articles | |
CN111950263B (zh) | 一种日志解析方法、系统及电子设备 | |
CN101377816B (zh) | 匹配规则包含位移指示符的并行多模式匹配的方法及系统 | |
CN101685502A (zh) | 模式匹配方法及装置 | |
CN115577095B (zh) | 一种基于图论的电力标准信息推荐方法 | |
CN101677318B (zh) | 匹配规则包含次数指示符的并行多模式匹配的方法及系统 | |
Husnain et al. | A novel preprocessing technique for toxic comment classification | |
Kosala et al. | Information extraction from web documents based on local unranked tree automaton inference | |
Lee et al. | Annotating multiple types of biomedical entities: a single word classification approach | |
CN100361128C (zh) | 一种用于文本或网络内容分析的多关键词匹配方法 | |
JP2008541272A (ja) | 署名生成および関連性を有するマッチングエンジン | |
US20110295781A1 (en) | Apparatus and Method for Improved Classifier Training | |
CN101441664A (zh) | 匹配规则包含可选字符的并行多模式匹配的方法及系统 | |
CN112597752B (zh) | 投诉文本的处理方法、装置、电子设备及存储介质 | |
Majumder et al. | Event extraction from biomedical text using crf and genetic algorithm | |
Khan et al. | Multimodal rule transfer into automatic knowledge based topic models | |
JP2009098931A (ja) | キーワード間の関連度算出システム及び関連度算出方法 | |
CN111177301A (zh) | 一种关键信息识别提取方法及系统 | |
Heath et al. | A multiple domain comparison of multi-label classification methods | |
JP5238105B2 (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 | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Open date: 20090318 |