模式串與文本串的匹配方法和裝置制造方法
【專利摘要】本發(fā)明公開了一種模式串與文本串的匹配方法和裝置,其中,該方法包括:將模式串與文本串進行匹配;在模式串與文本串失配的情況下,根據(jù)預(yù)先基于模式串構(gòu)建的多個預(yù)處理數(shù)組得到的最大正位移值確定文本串的跳轉(zhuǎn)方式。本發(fā)明通過在模式串與文本串中的字符失配后,利用預(yù)先構(gòu)建的多個預(yù)處理數(shù)組確定文本串的跳轉(zhuǎn)方式,能夠在保證模式串與文本串中的字符失配后模式串不回溯的情況下,保證模式串以最大正位移值進行跳轉(zhuǎn),提升了模式匹配速度與網(wǎng)絡(luò)管理的安全性。
【專利說明】模式串與文本串的匹配方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機領(lǐng)域,并且特別地,涉及一種模式串與文本串的匹配方法和裝置。
【背景技術(shù)】
[0002]模式匹配算法作為網(wǎng)絡(luò)安全的核心算法,其任務(wù)是在一個文本串(也可稱為目標串)中查找到指定字符串(即模式串),并返回該模式串在文本串中出現(xiàn)位置,模式匹配算法的效率直接影響到網(wǎng)絡(luò)安全的管理效率。最初的暴力搜索是通過窮舉來進行的,其缺點在于匹配速度慢,需時長。而后出現(xiàn)的經(jīng)典的單模式匹配算法包括克努斯-莫里斯-普拉特字符串查找算法(Knuth-Morris-Pratt,下文中簡稱為KMP)算法、坡藝爾-摩爾字符串搜索算法(Boyer-Moore,下文中簡稱為BM)算法、以及BM的優(yōu)化算法Boyer-Moore-Horspool(BMH)、Boyer-Moore-Horspool-Sunday (BMHS)> Boyer-Moore-Horspool-two-Chinese (下文中簡稱為BMH2C)等,這些經(jīng)典算法主要是利用字符失配后的跳轉(zhuǎn)來提升匹配速度。
[0003]其中,KMP算法的復(fù)雜度為O (n),可保證字符失配后,模式串不回溯,利用KMP算法在最壞情況下(即模式串位于文本串的末尾處),具有較高的性能。雖然KMP算法的跳轉(zhuǎn)距離(也可稱為位移值)恒為正,但由于跳轉(zhuǎn)距離較小,算法平均性能較BM算法要低。BM算法具有較大的跳轉(zhuǎn)距離,具有較好的平均性能,但由于BM算法在某些情況下會得出負的位移值,即不能保證文本串中的字符失配后不回溯,在最壞和較壞的情況下(即,模式串位于文本串的末尾或轉(zhuǎn)靠末尾處),BM算法具有較差的性能,其復(fù)雜度為O (mn)。
[0004]針對相關(guān)技術(shù)中單模式匹配算法在失配后,文本串跳轉(zhuǎn)較小或者回溯導(dǎo)致匹配效率低的問題,目如尚未提出有效的解決方案。
【發(fā)明內(nèi)容】
[0005]針對相關(guān)技術(shù)中單模式匹配算法在失配后,文本串跳轉(zhuǎn)較小或者回溯導(dǎo)致匹配效率低的問題,本發(fā)明提出一種模式串與文本串的匹配方法,能夠在保證模式串與文本串中的字符失配后文本串不回溯的情況下,保證文本串以最大正位移值進行跳轉(zhuǎn),提升了模式匹配速度與網(wǎng)絡(luò)管理的安全性。
[0006]本發(fā)明的技術(shù)方案是這樣實現(xiàn)的:
[0007]根據(jù)本發(fā)明的一個方面,提供了 一種模式串與文本串的匹配方法。
[0008]該匹配方法包括:將模式串與文本串進行匹配;
[0009]在模式串與文本串失配的情況下,根據(jù)預(yù)先基于模式串構(gòu)建的多個預(yù)處理數(shù)組得到的最大正位移值確定文本串的跳轉(zhuǎn)方式。
[0010]優(yōu)選地,多個預(yù)處理數(shù)組包括Skip數(shù)組和/或Next數(shù)組。
[0011]并且,優(yōu)先根據(jù)Skip數(shù)組得到位移值確定文本串的跳轉(zhuǎn)方式。
[0012]可選地,根據(jù)預(yù)先基于模式串構(gòu)建的多個預(yù)處理數(shù)組得到的最大正位移值確定文本串的跳轉(zhuǎn)方式包括:[0013]在Skip數(shù)組得到正位移值的情況下,根據(jù)該正位移值確定文本串的跳轉(zhuǎn)方式;
[0014]在Skip數(shù)組得到負位移值的情況下,根據(jù)Next數(shù)組得到正位移值,根據(jù)該正位移值確定文本串的跳轉(zhuǎn)方式。
[0015]進一步地,在將模式串與文本串進行匹配之前,將模式串與文本串進行左對齊。
[0016]其中,將模式串與文本串進行匹配包括:在匹配成功的情況下,返回文本串中與模式串相同的字符的位置。
[0017]根據(jù)本發(fā)明的另一個方面,提供了一種模式串與文本串的匹配裝置。
[0018]該匹配裝置包括:
[0019]匹配模塊,用于將模式串與文本串進行匹配;
[0020]確定模塊,用于在模式串與文本串失配的情況下,根據(jù)預(yù)先基于模式串構(gòu)建的多個預(yù)處理數(shù)組得到的最大正位移值確定文本串的跳轉(zhuǎn)方式。
[0021]優(yōu)選地,多個預(yù)處理數(shù)組包括Skip數(shù)組和/或Next數(shù)組。
[0022]并且,上述確定模塊還用于優(yōu)先根據(jù)Skip數(shù)組得到位移值確定文本串的跳轉(zhuǎn)方式。
[0023]可選地,上述確定模塊還用于:
[0024]在Skip數(shù)組得到正位移值的情況下,根據(jù)該正位移值確定文本串的跳轉(zhuǎn)方式;
[0025]在Skip數(shù)組得到負位移值的情況下,根據(jù)Next數(shù)組得到正位移值,根據(jù)該正位移值確定文本串的跳轉(zhuǎn)方式。
[0026]本發(fā)明通過在模式串與文本串中的字符失配后,利用預(yù)先構(gòu)建的多個預(yù)處理數(shù)組確定文本串的跳轉(zhuǎn)方式,能夠在保證模式串與文本串中的字符失配后文本串不回溯的情況下,保證文本串以最大正位移值進行跳轉(zhuǎn),提升了模式匹配速度與網(wǎng)絡(luò)管理的安全性。
【專利附圖】
【附圖說明】
[0027]圖1是根據(jù)本發(fā)明實施例的模式串與文本串的匹配方法的流程圖;
[0028]圖2是現(xiàn)有技術(shù)中BMH2C算法的流程圖;
[0029]圖3是根據(jù)本發(fā)明的一個實施例的匹配算法的流程圖;
[0030]圖4是根據(jù)本發(fā)明實施例的模式串與文本串的匹配裝置的框圖。
【具體實施方式】
[0031]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0032]根據(jù)本發(fā)明的實施例,提供了 一種模式串與文本串的匹配管理方法。
[0033]如圖1所示,根據(jù)本發(fā)明實施例的模式串與文本串的匹配方法包括:
[0034]步驟S101,將模式串與文本串進行匹配,進一步地,在將模式串與文本串進行匹配之前,將模式串與文本串進行左對齊,在匹配成功的情況下,返回文本串中與模式串相同的字符的位置;
[0035]步驟S103,在模式串與文本串失配的情況下,根據(jù)預(yù)先基于模式串構(gòu)建的多個預(yù)處理數(shù)組得到的最大正位移值確定文本串的跳轉(zhuǎn)方式,避免現(xiàn)有技術(shù)中在文本串失配情況下,僅通過單一的預(yù)處理數(shù)組得到位移值,造成位移值為負或較小的缺陷,從而能夠在保證模式串與文本串中的字符失配后文本串不回溯的情況下,保證文本串以最大正位移值進行跳轉(zhuǎn),提升了模式匹配速度與網(wǎng)絡(luò)管理的安全性。
[0036]優(yōu)先地,多個預(yù)處理數(shù)組包括Skip數(shù)組和/或Next數(shù)組,其中,Skip數(shù)組可以是KMP算法中的預(yù)處理數(shù)組,而Next數(shù)組可以是BMH2C算法中的預(yù)處理數(shù)組。以下簡單介紹KMP算法、BMH2C算法以及對這兩種算法進行比較,其中,文本串S為需要被查找的文本,模式串P是需要在文本中查找的字符串,i文本串游標指針(也稱為下標),j是模式串游標指針,η是文本串長度,m是模式串長度。
[0037]KMP算法:在KMP算法中,為了確保在字符失配后,下次匹配時j的位置,引入了預(yù)處理數(shù)組next[]數(shù)組,next[j]的值表示P[0~j_l]中最長的“后綴等于前綴”的綴長度。
[0038]對于next []數(shù)組的定義如下:
[0039](式l)next[0]=-l,其中,j=0,即,任何字符串的第一個字符的預(yù)處理值規(guī)定為_1 ;
[0040](式2) next[j]=kmax,其中 0〈k〈j ;P [0,1,2......k-l]=P[j-k, j-k+1, j-k+2......j_l];
[0041](式3) next[j]=0,其他情況。
[0042]例如,以表1中所示為例子具體分析next [j]數(shù)組的情況:
[0043]表1
【權(quán)利要求】
1.一種模式串與文本串的匹配方法,其特征在于,包括: 將所述模式串與所述文本串進行匹配; 在所述模式串與所述文本串失配的情況下,根據(jù)預(yù)先基于所述模式串構(gòu)建的多個預(yù)處理數(shù)組得到的最大正位移值確定所述文本串的跳轉(zhuǎn)方式。
2.根據(jù)權(quán)利要求1所述的匹配方法,其特征在于,多個預(yù)處理數(shù)組包括Skip數(shù)組和/或Next數(shù)組。
3.根據(jù)權(quán)利要求2所述的匹配方法,其特征在于,優(yōu)先根據(jù)Skip數(shù)組得到位移值確定所述文本串的跳轉(zhuǎn)方式。
4.根據(jù)權(quán)利要求3所述的匹配方法,其特征在于,根據(jù)預(yù)先基于所述模式串構(gòu)建的多個預(yù)處理數(shù)組得到的最大正位移值確定所述文本串的跳轉(zhuǎn)方式包括: 在所述Skip數(shù)組得到正位移值的情況下,根據(jù)該正位移值確定所述文本串的跳轉(zhuǎn)方式; 在所述Skip數(shù)組得到負位移值的情況下,根據(jù)所述Next數(shù)組得到正位移值,根據(jù)該正位移值確定所述文本串的跳轉(zhuǎn)方式。
5.根據(jù)權(quán)利要求1所述的匹配方法,其特征在于,在將所述模式串與所述文本串進行匹配之前,進一步包括: 將所述模式串與所述文本串進行左對齊。
6.根據(jù)權(quán)利要求1所述的匹配方法,其特征在于,將所述模式串與所述文本串進行匹配包括: 在匹配成功的情況下,返回所述文本串中與所述模式串相同的字符的位置。
7.一種模式串與文本串的匹配裝置,其特征在于,包括: 匹配模塊,用于將所述模式串與所述文本串進行匹配; 確定模塊,用于在所述模式串與所述文本串失配的情況下,根據(jù)預(yù)先基于所述模式串構(gòu)建的多個預(yù)處理數(shù)組得到的最大正位移值確定所述文本串的跳轉(zhuǎn)方式。
8.根據(jù)權(quán)利要求7所述的匹配方法,其特征在于,多個預(yù)處理數(shù)組包括Skip數(shù)組和/或Next數(shù)組。
9.根據(jù)權(quán)利要求8所述的匹配裝置,其特征在于,所述確定模塊還用于優(yōu)先根據(jù)Skip數(shù)組得到位移值確定所述文本串的跳轉(zhuǎn)方式。
10.根據(jù)權(quán)利要求9所述的匹配裝置,其特征在于,所述確定模塊進一步用于: 在所述Skip數(shù)組得到正位移值的情況下,根據(jù)該正位移值確定所述文本串的跳轉(zhuǎn)方式; 在所述Skip數(shù)組得到負位移值的情況下,根據(jù)所述Next數(shù)組得到正位移值,根據(jù)該正位移值確定所述文本串的跳轉(zhuǎn)方式。
【文檔編號】G06F17/30GK103577598SQ201310576313
【公開日】2014年2月12日 申請日期:2013年11月15日 優(yōu)先權(quán)日:2013年11月15日
【發(fā)明者】李開科 申請人:曙光信息產(chǎn)業(yè)(北京)有限公司