CN105426412A - 多模式的串匹配方法和装置 - Google Patents
多模式的串匹配方法和装置 Download PDFInfo
- Publication number
- CN105426412A CN105426412A CN201510733599.4A CN201510733599A CN105426412A CN 105426412 A CN105426412 A CN 105426412A CN 201510733599 A CN201510733599 A CN 201510733599A CN 105426412 A CN105426412 A CN 105426412A
- Authority
- CN
- China
- Prior art keywords
- string
- mobile watch
- aho
- corasick
- automat
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种多模式的串匹配方法和装置。所述方法包括:根据模式串创建Aho-Corasick自动机;根据模式串创建移动表,其中所述移动表记录了所述模式串中字符块的位移量;若文本串的滑动窗口未滑动至所述文本串的末尾,根据所述移动表寻找可能的匹配位置;对根据所述移动表找到的可能的匹配位置,根据所述Aho-Corasick自动机进行匹配验证;根据所述移动表继续寻找下一个可能的匹配位置,直至所述滑动窗口滑动至所述文本串的末尾。本发明实施例提供的多模式的串匹配方法和装置解决了AC算法中窗口滑动慢的问题,以及Wu-Manber算法中比较结果不留存的问题。
Description
技术领域
本发明实施例涉及计算机数据处理技术领域,尤其涉及一种多模式的串匹配方法和装置。
背景技术
串匹配问题是计算机科学领域中最为经常遇到的一类问题。串匹配算法在信息减弱、分子生物学、数据压缩等方面有着非常广泛的应用。串匹配算法可以被分为单模式串匹配算法和多模式串匹配算法。而在多模式串匹配算法中,Aho-Corasick算法和Wu-Manber算法是最为经典的两种算法。
Aho-Corasick算法简称AC算法,是KMP单模式串匹配算法处理多模式串的扩展算法。AC算法采用有限状态自动机来组织所有的模式串,集成了KMP算法,通过计算最长前缀移动窗口和匹配位置,以减少遍历所有匹配窗口的循环次数。
但是,AC算法在执行过程中,是以文本串的每个字符为单位,逐一进行计算。这就造成了在运行AC算法进行串匹配时,比较次数较多,运行效率不高。
Wu-Manber算法是BM算法在处理多模式串问题时使用的一种派生算法,它的主要特点是集成了BM算法中不良字符转移机制,利用块字符扩展了不良字符的转移效果,同时利用散列表来减少匹配过程的计算量。
在Wu-Manber算法执行时,当前缀确认匹配之后,需要进行字符串其余部分的验证,而且,这种验证是模式串的全长度验证。显然,这种模式串的全长度验证会导致对原始文本内容提前的比对。但是在Wu-Manber算法中,并没有对这种提前发生的比对进行结果记录,造成寻找下一个可能的匹配位置时仍然要依赖再一次的比较操作,造成算法性能的下降。
发明内容
针对上述技术问题,本发明实施例提供了一种多模式的串匹配方法和装置,以解决AC算法中窗口滑动慢,以及Wu-Manber算法中比较结果不留存的问题。
第一方面,本发明实施例提供了一种多模式的串匹配方法,所述方法包括:
根据模式串创建Aho-Corasick自动机;
根据模式串创建移动表,其中所述移动表记录了所述模式串中字符块的位移量;
若文本串的滑动窗口未滑动至所述文本串的末尾,根据所述移动表寻找可能的匹配位置,所述滑动窗口的长度至少是2;
对根据所述移动表找到的可能的匹配位置,根据所述Aho-Corasick自动机进行匹配验证;
根据所述移动表继续寻找下一个可能的匹配位置,直至所述滑动窗口滑动至所述文本串的末尾。
第二方面,本发明实施例还提供了一种多模式的串匹配装置,所述装置包括:
自动机创建模块,用于根据模式串创建Aho-Corasick自动机;
移动表创建模块,用于根据模式串创建移动表,其中所述移动表记录了所述模式串中字符块的位移量;
位置寻找模块,用于若文本串的滑动窗口未滑动至所述文本串的末尾,根据所述移动表寻找可能的匹配位置,所述滑动窗口的长度至少是2;
匹配验证模块,用于对根据所述移动表找到的可能的匹配位置,根据所述Aho-Corasick自动机进行匹配验证;
重复寻找模块,用于根据所述移动表继续寻找下一个可能的匹配位置,直至所述滑动窗口滑动至所述文本串的末尾。
本发明实施例提供的多模式的串匹配方法和装置,利用移动表寻找文本串与多个模式串之间可能的匹配位置,再利用Aho-Corasick自动机对所述可能的匹配位置进行匹配验证,综合了AC算法及Wu-Manber算法的优点,解决了AC算法中窗口滑动慢,以及Wu-Manber算法中比较结果不留存的问题,提高了串匹配的执行效率。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1是本发明第一实施例提供的多模式的串匹配方法的流程图;
图2是本发明第一实施例提供的Aho-Corasick自动机的结构示意图;
图3是本发明第二实施例提供的多模式的串匹配方法中自动机创建操作的流程图;
图4是本发明第三实施例提供的多模式的串匹配装置的结构图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
第一实施例
本实施例提供了多模式的串匹配方法的一种技术方案。在该技术方案中,作为主字符串的文本串一次与至少两个模式串进行匹配。并且,所述文本串及所述模式串的内容均出自于预先定义的一个有限的符号集合。
参见图1,所述多模式的串匹配方法包括:
S11,根据模式串创建Aho-Corasick自动机。
所述Aho-Corasick自动机是AC算法中必须使用的一种数据结构,它属于有限状态自动机(Finitestatemachine,FSA)中的一种。所述Aho-Corasick自动机是Aho等人对trie结构进行扩展后形成的,其基本结构是由所有模式串所构成的树形结构。与传统的tire结构相比,每个节点增加了一个转移指针。所述转移指针指向每个状态的失效节点,表示该节点对应子串在KMP算法中根据最长前缀计算出的转移节点。图2示出了由模式串集合P={he,she,his,hers}所构成的Aho-Corasick自动机。
具体的,所述Aho-Corasick自动机的创建过程与现有的AC算法中Aho-Corasick自动机的创建过程相同。具体的,可以通过分别创建所述模式串的转移函数、失效函数以及输出函数,实现对所述Aho-Corasick自动机的创建。
S12,根据模式串创建移动表,其中所述移动表记录了所述模式串中字符块的位移量。
所述移动表也被称为shift表,是在Wu-Manber算法中必须使用的一种表。它与哈希(hash)表及前缀(prefix)表共同形成了Wu-Manber算法独有的查询词典,使得Wu-Manber算法中可以快速的进行窗口的滑动而不需要针对每个字符进行比较,并且有效的避免一些不必要的匹配的发生。
所述移动表是在模式集中取每个模式串的前B个字符,计算该字符块的哈希值对应表项的跳转值。通过所述移动表,整个字符查找的过程就变成了根据词表进行跳转的过程。所述移动表也有自己的默认跳转值,与所有模式串中最短长度有关系。因此,假设模式串集合中所有模式串的长度都很长的时候,执行串匹配的跳转速度会很快。
建立所述Aho-Corasick自动机的步骤以及建立所述移动表的步骤是真正开始执行串匹配运算之前的准备步骤。但是,由于本实施例提供的方法在执行串匹配运算时需要使用上述两种数据结构,因此上述两种数据结构的创建必须在真正执行串匹配操作之前完成。
S13,若文本串的滑动窗口未滑动至所述文本串的末尾,根据所述移动表寻找可能的匹配位置,所述滑动窗口的长度至少是2。
利用所述滑动窗口在所述文本串上的滑动,找寻所述文本串上可能的匹配位置。而且,所述滑动窗口的长度至少是2。
优选的,可以通过查找所述移动表中位移量是0的位置,并将位移量为0的位置作为可能的匹配位置。
S14,对根据所述移动表找到的可能的匹配位置,根据所述Aho-Corasick自动机进行匹配验证。
具体的,根据所述Aho-Corasick自动机进行匹配验证就是在所述可能的匹配位置上运行AC算法,从而验证所述可能的匹配位置是不是与模式串真正匹配。
S15,根据所述移动表继续寻找下一个可能的匹配位置,直至所述滑动窗口滑动至所述文本串的末尾。
在执行了对一个可能的匹配位置的匹配验证之后,根据所述移动表查找下一个可能的匹配位置,并对所述下一个可能的匹配位置进行匹配验证。当所述滑动串口被滑动至所述文本串的末尾时,所述多模式的串匹配方法执行结束。
本实施例通过根据模式串创建Aho-Corasick自动机,根据模式串创建移动表,若文本串的滑动窗口未滑动至所述文本串的末尾,根据所述移动表寻找可能的匹配位置,对根据所述移动表找到的可能的匹配位置,根据所述Aho-Corasick自动机进行匹配验证,根据所述移动表继续寻找下一个可能的匹配位置,直至所述滑动窗口滑动至所述文本串的末尾,解决了AC算法中窗口滑动慢,以及Wu-Manber算法中比较结果不留存的问题。
第二实施例
本实施例以本发明上述实施例为基础,进一步的提供了所述多模式的串匹配方法中匹配验证的一种技术方案。在该技术方案中,对根据所述移动表找到的可能的匹配位置,根据所述Aho-Corasick自动机进行匹配验证包括:读取文本串的下一个字符;若当前状态存在一个权值为所述下一个字符的下一个状态,则跳转至下一个状态;若所述下一个状态为终结状态,则报告字符串匹配成功。
参见图3,对根据所述移动表找到的可能的匹配位置,根据所述Aho-Corasick自动机进行匹配验证包括:
S31,读取文本串的下一个字符。
本实施例利用AC算法中的匹配机制对可能的匹配位置是否真正是匹配位置进行验证。而AC算法中对文本串中的字符是逐个进行运算的。因此,在根据Aho-Corasick自动机进行匹配验证的开始,首先需要读取所述文本串的下一个字符。
S32,若当前状态存在一个权值为所述下一个字符的下一个状态,则跳转至下一个状态。
在所述Aho-Corasick自动机中,每个转移指针都具有其对应的权值。而且,这个权值的取值是该状态转移在所述模式串中对应的字符。
如果在当前状态下,存在一个转移指针,它的权值就是刚刚读取的所述文本串中的下一个字符,则将在所述Aho-Corasick自动机的当前状态转换为所述下一个状态。
S33,若所述下一个状态为终结状态,则报告字符串匹配成功。
在所述Aho-Corasick自动机中,如果一个状态的转移指针的个数是0,则这个状态是终结状态。如果在状态转移的过程中,跳转至的状态是一个终结状态,则说明文本串与模式串之间的匹配成功,可以报告上述成功。
本实施例所提供的多模式的串匹配方法中的匹配验证的技术方案可以由如下的伪码表示:
上述伪码中,q表示在串匹配过程中所述Aho-Corasick自动机的当前节点,goto()是AC算法中的转移函数,fail()是AC算法中的失效函数,output()是AC算法中的输出函数。
本实施例通过读取文本串的下一个字符,在当前状态存在一个权值为所述下一个字符的下一个状态时,跳转至下一个状态,以及当所述下一个状态是终结状态时,报告字符串匹配成功,实现了对可能的匹配位置的匹配验证。
第四实施例
本实施例提供了多模式的串匹配装置的一种技术方案。参见图4,所述多模式的串匹配装置包括:自动机创建模块41、移动表创建模块42、位置寻找模块43、匹配验证模块44以及重复寻找模块45。
所述自动机创建模块41用于根据模式串创建Aho-Corasick自动机。
所述移动表创建模块42用于根据模式串创建移动表,其中所述移动表记录了所述模式串中字符块的位移量。
所述位置寻找模块43用于若文本串的滑动窗口未滑动至所述文本串的末尾,根据所述移动表寻找可能的匹配位置,所述滑动窗口的长度至少是2。
所述匹配验证模块44用于对根据所述移动表找到的可能的匹配位置,根据所述Aho-Corasick自动机进行匹配验证。
所述重复寻找模块45用于根据所述移动表继续寻找下一个可能的匹配位置,直至所述滑动窗口滑动至所述文本串的末尾。
可选的,所述位置寻找模块43具体用于:查找所述移动表中记录的,位移量为0的位置,并将所述位移量为0的位置作为可能的匹配位置。
可选的,所述匹配验证模块44包括:字符读取单元、状态跳转单元以及报告单元。
所述字符读取单元用于读取文本串的下一个字符。
所述状态跳转单元用于若当前状态存在一个权值为所述下一个字符的下一个状态,则跳转至下一个状态。
所述报告单元用于若所述下一个状态为终结状态,则报告字符串匹配成功。
本领域普通技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个计算装置上,或者分布在多个计算装置所组成的网络上,可选地,他们可以用计算机装置可执行的程序代码来实现,从而可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件的结合。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间的相同或相似的部分互相参见即可。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种多模式的串匹配方法,其特征在于,包括:
根据模式串创建Aho-Corasick自动机;
根据模式串创建移动表,其中,所述移动表记录了所述模式串中字符块的位移量;
若文本串的滑动窗口未滑动至所述文本串的末尾,根据所述移动表寻找可能的匹配位置,所述滑动窗口的长度至少是2;
对根据所述移动表找到的可能的匹配位置,根据所述Aho-Corasick自动机进行匹配验证;
根据所述移动表继续寻找下一个可能的匹配位置,直至所述滑动窗口滑动至所述文本串的末尾。
2.根据权利要求1所述的方法,其特征在于,根据所述移动表寻找可能的匹配位置包括:
查找所述移动表中记录的,位移量为0的位置,并将所述位移量为0的位置作为可能的匹配位置。
3.根据权利要求1所述的方法,其特征在于,对根据所述移动表找到的可能的匹配位置,根据所述Aho-Corasick自动机进行匹配验证包括:
读取文本串的下一个字符;
若当前状态存在一个权值为所述下一个字符的下一个状态,则跳转至下一个状态;
若所述下一个状态为终结状态,则报告字符串匹配成功。
4.一种多模式的串匹配装置,其特征在于,包括:
自动机创建模块,用于根据模式串创建Aho-Corasick自动机;
移动表创建模块,用于根据模式串创建移动表,其中所述移动表记录了所述模式串中字符块的位移量;
位置寻找模块,用于若文本串的滑动窗口未滑动至所述文本串的末尾,根据所述移动表寻找可能的匹配位置,所述滑动窗口的长度至少是2;
匹配验证模块,用于对根据所述移动表找到的可能的匹配位置,根据所述Aho-Corasick自动机进行匹配验证;
重复寻找模块,用于根据所述移动表继续寻找下一个可能的匹配位置,直至所述滑动窗口滑动至所述文本串的末尾。
5.根据权利要求4所述的装置,其特征在于,所述位置寻找模块具体用于:
查找所述移动表中记录的,位移量为0的位置,并将所述位移量为0的位置作为可能的匹配位置。
6.根据权利要求4所述的装置,其特征在于,所述匹配验证模块包括:
字符读取单元,用于读取文本串的下一个字符;
状态跳转单元,用于若当前状态存在一个权值为所述下一个字符的下一个状态,则跳转至下一个状态;
报告单元,用于若所述下一个状态为终结状态,则报告字符串匹配成功。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510733599.4A CN105426412A (zh) | 2015-11-03 | 2015-11-03 | 多模式的串匹配方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510733599.4A CN105426412A (zh) | 2015-11-03 | 2015-11-03 | 多模式的串匹配方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105426412A true CN105426412A (zh) | 2016-03-23 |
Family
ID=55504624
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510733599.4A Pending CN105426412A (zh) | 2015-11-03 | 2015-11-03 | 多模式的串匹配方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105426412A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109145283A (zh) * | 2017-06-17 | 2019-01-04 | 黄冈 | 一种人工智能的敏感信息检测方法 |
CN109271419A (zh) * | 2018-09-03 | 2019-01-25 | 河北工业大学 | 一种无间隙约束的在线串匹配方法 |
CN109348304A (zh) * | 2018-09-30 | 2019-02-15 | 武汉斗鱼网络科技有限公司 | 一种弹幕数据的校验方法、装置及终端 |
CN110362669A (zh) * | 2019-07-18 | 2019-10-22 | 中科信息安全共性技术国家工程研究中心有限公司 | 一种适用于关键字快速检索的算法 |
CN110413958A (zh) * | 2019-06-12 | 2019-11-05 | 中国科学院信息工程研究所 | 用于自动机空间压缩的线性同余字符集变换方法及系统 |
CN111159362A (zh) * | 2019-12-31 | 2020-05-15 | 奇安信科技集团股份有限公司 | 文本匹配处理方法及装置 |
CN117113436A (zh) * | 2023-10-16 | 2023-11-24 | 中电科大数据研究院有限公司 | 一种基于区块链的数据可信确权方法和装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101251845A (zh) * | 2008-03-13 | 2008-08-27 | 苏州爱迪比科技有限公司 | 利用改进的Wu-Manber算法进行多模式串匹配的方法 |
-
2015
- 2015-11-03 CN CN201510733599.4A patent/CN105426412A/zh active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101251845A (zh) * | 2008-03-13 | 2008-08-27 | 苏州爱迪比科技有限公司 | 利用改进的Wu-Manber算法进行多模式串匹配的方法 |
Non-Patent Citations (3)
Title |
---|
《INTERNATIONAL JOURNAL ON ARTIFICIAL INTELLIGENCE TOOLS》 * |
《计算机应用研究》 * |
《计算机研究与发展》 * |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109145283A (zh) * | 2017-06-17 | 2019-01-04 | 黄冈 | 一种人工智能的敏感信息检测方法 |
CN109145283B (zh) * | 2017-06-17 | 2022-03-15 | 黄冈 | 一种人工智能的敏感信息检测方法 |
CN109271419A (zh) * | 2018-09-03 | 2019-01-25 | 河北工业大学 | 一种无间隙约束的在线串匹配方法 |
CN109271419B (zh) * | 2018-09-03 | 2021-06-22 | 河北工业大学 | 一种无间隙约束的在线串匹配方法 |
CN109348304A (zh) * | 2018-09-30 | 2019-02-15 | 武汉斗鱼网络科技有限公司 | 一种弹幕数据的校验方法、装置及终端 |
CN109348304B (zh) * | 2018-09-30 | 2021-04-27 | 武汉斗鱼网络科技有限公司 | 一种弹幕数据的校验方法、装置及终端 |
CN110413958A (zh) * | 2019-06-12 | 2019-11-05 | 中国科学院信息工程研究所 | 用于自动机空间压缩的线性同余字符集变换方法及系统 |
CN110362669A (zh) * | 2019-07-18 | 2019-10-22 | 中科信息安全共性技术国家工程研究中心有限公司 | 一种适用于关键字快速检索的算法 |
CN111159362A (zh) * | 2019-12-31 | 2020-05-15 | 奇安信科技集团股份有限公司 | 文本匹配处理方法及装置 |
CN111159362B (zh) * | 2019-12-31 | 2024-04-26 | 奇安信科技集团股份有限公司 | 文本匹配处理方法及装置 |
CN117113436A (zh) * | 2023-10-16 | 2023-11-24 | 中电科大数据研究院有限公司 | 一种基于区块链的数据可信确权方法和装置 |
CN117113436B (zh) * | 2023-10-16 | 2024-01-26 | 中电科大数据研究院有限公司 | 一种基于区块链的数据可信确权方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105426412A (zh) | 多模式的串匹配方法和装置 | |
US20140108305A1 (en) | Ranking for inductive synthesis of string transformations | |
CN104899264B (zh) | 一种多模式正则表达式匹配方法及装置 | |
CN102870116B (zh) | 内容匹配方法和装置 | |
WO2012090763A1 (ja) | コード列検索装置、検索方法及びプログラム | |
CN103188267B (zh) | 一种基于dfa的协议解析方法 | |
Amir et al. | Pattern matching in hypertext | |
US9043275B2 (en) | Data synchronization using string matching | |
CN112286963A (zh) | 一种区块链终端数据可信查询系统及其实现方法 | |
CN101251845B (zh) | 利用改进的Wu-Manber算法进行多模式串匹配的方法 | |
CN116562297A (zh) | 基于HTrie树的中文敏感词变形体识别方法及系统 | |
CN104572872A (zh) | 一种基于极值的数据去重分块方法 | |
CN114647764B (zh) | 图结构的查询方法、装置及存储介质 | |
JP6072922B2 (ja) | 文字列検索装置、文字列検索方法および文字列検索プログラム | |
Fujisato et al. | Right-to-left online construction of parameterized position heaps | |
CN103500178B (zh) | 一种fs算法最差情况下的快速多模式匹配方法 | |
CN104268176A (zh) | 一种基于搜索关键词的推荐方法及系统 | |
CN115982310A (zh) | 一种自带验证功能的链表生成方法及电子设备 | |
CN110909214A (zh) | 基于kmp匹配算法的字符串快速匹配方法 | |
JP6790905B2 (ja) | 検出方法、検出装置および検出プログラム | |
CN113065419B (zh) | 一种基于流量高频内容的模式匹配算法及系统 | |
US8543574B2 (en) | Partial-matching for web searches | |
JP2020016984A (ja) | 軌跡検索装置及び軌跡検索プログラム | |
JP4347086B2 (ja) | パターンマッチング装置および方法ならびにプログラム | |
Chayapathi | Survey and comparison of string matching algorithms |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160323 |
|
RJ01 | Rejection of invention patent application after publication |