專利名稱:字符串的匹配方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及互聯(lián)網(wǎng)領(lǐng)域,具體而言,涉及一種字符串的匹配方法及裝置。
背景技術(shù):
現(xiàn)有技術(shù)的互聯(lián)網(wǎng)技術(shù)中,在對某些敏感詞或者關(guān)鍵詞進(jìn)行匹配以達(dá)到篩選或者過濾時,會在確定被匹配的字符串后,分別將輸入的數(shù)據(jù)中的每個字符串與被匹配的字符串進(jìn)行匹配,輸入的數(shù)據(jù)中大量不同的未被匹配的字符串在進(jìn)行匹配的過程中,占用了大量的內(nèi)存,降低了匹配的速度和效率。針對現(xiàn)有技術(shù)中進(jìn)行匹配的速度較慢的問題,目前尚未提出有效的解決方案
發(fā)明內(nèi)容
本發(fā)明提供了一種字符串的匹配方法及裝置,以至少解決現(xiàn)有技術(shù)中進(jìn)行匹配的速度較慢的問題。為了實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明的一個方面,提供了一種字符串的匹配方法。根據(jù)本發(fā)明的字符串的匹配方法包括獲取字符映射表,其中,在字符映射表中,所有與預(yù)設(shè)字符串中的字符不同的字符均對應(yīng)于第一映射字符,第一映射字符與預(yù)設(shè)字符串中的字符在字符映射表中的映射字符均不同;接收輸入數(shù)據(jù);獲取輸入數(shù)據(jù)中的字符在字符映射表中的映射字符;以及將獲取到的映射字符組成的字符串與預(yù)設(shè)字符串在字符映射表中的映射的字符串相匹配。進(jìn)一步地,獲取字符映射表包括獲取預(yù)設(shè)字符串中不同字符的數(shù)量M ;獲取預(yù)設(shè)字符串中的字符在字符映射表中的映射字符,其中,預(yù)設(shè)字符串中的字符按順序映射為O至M-I ;以及獲取與預(yù)設(shè)字符串中的字符不同的字符在字符映射表中的映射字符M。進(jìn)一步地,獲取輸入數(shù)據(jù)中的字符在字符映射表中的映射字符包括獲取URL中與預(yù)設(shè)字符串中的字符相同的字符在字符映射表中的映射字符;以及獲取URL中與預(yù)設(shè)字符串中的字符相同的字符在字符映射表中的映射字符M。進(jìn)一步地,獲取字符映射表包括將與預(yù)設(shè)字符串中的字符相同的字符映射為字符本身;以及將所有與預(yù)設(shè)字符串中的字符不同的字符映射為第一映射字符,其中,第一映射字符與預(yù)設(shè)字符串中的字符均不同。進(jìn)一步地,將獲取到的映射字符組成的字符串與預(yù)設(shè)字符串在字符映射表中的映射的字符串相匹配之后,上述方法還包括獲取由經(jīng)過映射的輸入的數(shù)據(jù)中的字符構(gòu)成的矩陣;以及存儲由矩陣的下標(biāo)和值組成的二元組以壓縮矩陣。為了實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明的另一個方面,提供了一種字符串的匹配裝置,該裝置用于執(zhí)行本發(fā)明提供的任意一種字符串的匹配方法。根據(jù)本發(fā)明的另一方面,提供了一種字符串的匹配裝置。該字符串的匹配裝置包括第一獲取單元,用于獲取字符映射表,其中,在字符映射表中,所有與預(yù)設(shè)字符串中的字符不同的字符均對應(yīng)于第一映射字符,第一映射字符與預(yù)設(shè)字符串中的字符在字符映射表中的映射字符均不同;接收單元,用于接收輸入數(shù)據(jù);第二獲取單元,用于獲取輸入數(shù)據(jù)中的字符在字符映射表中的映射字符;以及匹配單元,用于將獲取到的映射字符組成的字符串與預(yù)設(shè)字符串在字符映射表中的映射的字符串相匹配。進(jìn)一步地,第一獲取單元包括第一獲取子單元,用于獲取預(yù)設(shè)字符串中不同字符的數(shù)量M ;第二獲取子單元,用于獲取預(yù)設(shè)字符串中的字符在字符映射表中的映射字符,其中,預(yù)設(shè)字符串中的字符按順序映射為O至M-I ;以及第三獲取子單元,用于獲取與預(yù)設(shè)字符串中的字符不同的字符在字符映射表中的映射字符M。進(jìn)一步地,第二獲取單元包括第四獲取子單元,用于獲取URL中與預(yù)設(shè)字符串中的字符相同的字符在字符映射表中的映射字符;以及第五獲取子單元,用于獲取URL中與預(yù)設(shè)字符串中的字符相同的字符在字符映射表中的映射字符M。進(jìn)一步地,第一獲取單元包括第一映射子單元,用于將與預(yù)設(shè)字符串中的字符相 同的字符映射為字符本身;以及第二映射子單元,用于將所有與預(yù)設(shè)字符串中的字符不同的字符映射為第一映射字符,其中,第一映射字符與預(yù)設(shè)字符串中的字符均不同。進(jìn)一步地,上述裝置還包括第三獲取單元,用于獲取由經(jīng)過映射的輸入的數(shù)據(jù)中的字符構(gòu)成的矩陣;以及壓縮單元,用于存儲由矩陣的下標(biāo)和值組成的二元組以壓縮矩陣。通過本發(fā)明,將所有預(yù)設(shè)字符串中沒有出現(xiàn)過的字符都映射到同一個字符,因此在進(jìn)行匹配的過程中,僅需識別某一字符是否與預(yù)設(shè)字符串中的字符匹配,而不用分別識別各個未被匹配的字符,減小了進(jìn)行匹配時的內(nèi)存的占用,提高了匹配的速度,解決了現(xiàn)有技術(shù)中進(jìn)行匹配的速度較慢的問題,進(jìn)而提高了匹配的效率。
構(gòu)成本申請的一部分的附圖用來提供對本發(fā)明的進(jìn)一步理解,本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中圖I是根據(jù)本發(fā)明實(shí)施例的字符串的匹配裝置的結(jié)構(gòu)框圖;圖2是根據(jù)本發(fā)明優(yōu)選實(shí)施例的字符串的匹配裝置的結(jié)構(gòu)框圖;圖3是根據(jù)本發(fā)明實(shí)施例的字符串的匹配方法的流程圖;以及圖4是根據(jù)本發(fā)明實(shí)施例的字符串的匹配方法的流程圖。
具體實(shí)施例方式需要說明的是,在不沖突的情況下,本申請中的實(shí)施例及實(shí)施例中的特征可以相互組合。下面將參考附圖并結(jié)合實(shí)施例來詳細(xì)說明本發(fā)明。本發(fā)明實(shí)施例提供了一種字符串的匹配裝置,以下對本發(fā)明實(shí)施例所提供的字符串的匹配裝置進(jìn)行介紹。圖I是根據(jù)本發(fā)明實(shí)施例的字符串的匹配裝置的結(jié)構(gòu)框圖。如圖I所示,該字符串的匹配裝置包括第一獲取單元11、接收單元12、第二獲取單元13和匹配單元14。第一獲取單元11用于獲取字符映射表,其中,在字符映射表中,所有與預(yù)設(shè)字符串中的字符不同的字符均對應(yīng)于第一映射字符,第一映射字符與預(yù)設(shè)字符串中的字符在字符映射表中的映射字符均不同。
例如,當(dāng)預(yù)設(shè)字符串為“abc”和“bed”時,可以將a映射為0,b映射為l,c映射為2,d映射為3,那么除了 a、b、c和d之外的所有字符都將被映射到4。接收單元12用于接收輸入數(shù)據(jù)。第二獲取單元13用于獲取輸入數(shù)據(jù)中的字符在字符映射表中的映射字符。 在本實(shí)施例中,如果輸入數(shù)據(jù)是“abcefg”,輸入數(shù)據(jù)中的字符可以被逐個映射為012444。匹配單元14用于將獲取到的映射字符組成的字符串與預(yù)設(shè)字符串在字符映射表中的映射的字符串相匹配。匹配單元14可以通過確定有限狀態(tài)自動機(jī)DFA來實(shí)現(xiàn)匹配功能。在本實(shí)施例中,將所有預(yù)設(shè)字符串中沒有出現(xiàn)過的字符都映射到同一個字符,因 此在進(jìn)行匹配的過程中,僅需識別某一字符是否與預(yù)設(shè)字符串中的字符匹配,而不用分別識別各個未被匹配的字符,減小了進(jìn)行匹配時的內(nèi)存的占用,提高了匹配的速度,進(jìn)而提高了匹配的效率。圖2是根據(jù)本發(fā)明優(yōu)選實(shí)施例的字符串的匹配裝置的結(jié)構(gòu)框圖。該實(shí)施例可以作為上述實(shí)施例的優(yōu)選實(shí)施方式。如圖2所示,該字符串的匹配裝置包括第一獲取單元11、接收單元12、第二獲取單元13和匹配單元14,其中,第一獲取單元11包括第一獲取子單元112、第二獲取子單元114和第三獲取子單元116。第一獲取子單元112用于獲取預(yù)設(shè)字符串中不同字符的數(shù)量M。第二獲取子單元114用于獲取預(yù)設(shè)字符串中的字符在字符映射表中的映射字符,其中,預(yù)設(shè)字符串中的字符按順序映射為O至M-I。第三獲取子單元116用于獲取與預(yù)設(shè)字符串中的字符不同的字符在字符映射表中的映射字符M。在該實(shí)施例中,通過數(shù)字編號的方法對字符進(jìn)行映射,進(jìn)一步保證映射過程的準(zhǔn)確性,減小出現(xiàn)錯誤的概率。本實(shí)施例可以被應(yīng)用在URL過濾的場景中,優(yōu)選地,第二獲取單元13包括第四獲取子單元和第五獲取子單元。第四獲取子單元用于獲取URL中與預(yù)設(shè)字符串中的字符相同的字符在字符映射表中的映射字符。第五獲取子單元用于獲取URL中與預(yù)設(shè)字符串中的字符相同的字符在字符映射表中的映射字符M。為了簡化映射過程,可以僅對與預(yù)設(shè)字符串中的字符不同的字符進(jìn)行映射,而將與預(yù)設(shè)字符串中的字符相同的字符映射映射為自身,優(yōu)選地,第一獲取單元11包括第一映射子單元和第二映射子單元。第一映射子單元用于將與預(yù)設(shè)字符串中的字符相同的字符映射為該字符本身。第二映射子單元用于將所有與預(yù)設(shè)字符串中的字符不同的字符映射為第一映射字符,其中,第一映射字符與預(yù)設(shè)字符串中的字符均不同。在本實(shí)施例中,可以通過壓縮的方式減小內(nèi)存的占用以提高匹配性能,優(yōu)選地,上述裝置還包括第三獲取單元和壓縮單元。第三獲取單元用于獲取由經(jīng)過映射的輸入的數(shù)據(jù)中的字符構(gòu)成的矩陣。壓縮單元用于存儲由矩陣的下標(biāo)和值組成的二元組以壓縮矩陣。本發(fā)明實(shí)施例還提供了一種字符串的匹配方法,該方法可以基于上述的字符串的匹配裝置來執(zhí)行。
圖3是根據(jù)本發(fā)明實(shí)施例的字符串的匹配方法的流程圖。如圖3所示,該字符串的匹配方法包括如下的步驟S302至步驟S308。步驟S302,獲取字符映射表,其中,在字符映射表中,所有與預(yù)設(shè)字符串中的字符不同的字符均對應(yīng)于第一映射字符,第一映射字符與預(yù)設(shè)字符串中的字符在字符映射表中的映射字符均不同。進(jìn)行映射的目的之一是為了對所有與預(yù)設(shè)字符串中的字符不同的字符進(jìn)行無差異的處理,因此,在本實(shí)施例中,確定輸入字符與預(yù)設(shè)字符是否匹配即可,該字符是具體什么字符可以不予考慮。在進(jìn)行字符匹配,生成DFA圖時,字符集都會被取為一個字節(jié)的取值范圍,即
0-255,這樣每個狀態(tài)對應(yīng)的轉(zhuǎn)移數(shù)組的長度也就是256,實(shí)際上,我們根據(jù)對生成原始正則表達(dá)式的分析可以發(fā)現(xiàn),很多字符在所有狀態(tài)下引起的轉(zhuǎn)移是確定的,比如要匹配的原始 字符串是“abcd”、“gcp. *fk”和這三個,可以看到,輸入為0_9這些數(shù)字的時候,無論當(dāng)前是什么狀態(tài),其轉(zhuǎn)移永遠(yuǎn)都是跳到同樣的下一狀態(tài)。根據(jù)這個特點(diǎn),可以對字符集做一個映射,把這些預(yù)設(shè)的需要匹配的字符串中沒有出現(xiàn)過的字符都映射成一個字符然后再進(jìn)行DFA轉(zhuǎn)換和合并等。這樣最后生成的DFA的每狀態(tài)轉(zhuǎn)移數(shù)組可能比直接使用大小為256的字符集小的多,從而達(dá)到較小內(nèi)存占用的目的。為了使本步驟更加簡便,可以僅對與預(yù)設(shè)字符串中的字符不同的字符進(jìn)行映射,即將與預(yù)設(shè)字符串中的字符相同的字符映射映射為自身。這一優(yōu)選實(shí)施例可以通過以下兩個步驟來實(shí)現(xiàn)首先,將與預(yù)設(shè)字符串中的字符相同的字符映射為該字符本身。然后,將所有與預(yù)設(shè)字符串中的字符不同的字符映射為第一映射字符,其中,第一映射字符與預(yù)設(shè)字符串中的字符均不同。例如預(yù)設(shè)字符串是“abc”和“bed”,那么a、b、c和d四個字符在字符映射表中對應(yīng)的字符是其本身,除了這四個字符以外的字符均映射到一個不同于a、b、c和d的字符,例如X,那么在該字符映射表中,a對應(yīng)的字符是a,b對應(yīng)的字符是b,c對應(yīng)的字符是c,d對應(yīng)的字符是d,其他所有字符均對應(yīng)到字符X,X既可以是預(yù)設(shè)的,也可以是從a、b、c和d之外的字符中隨機(jī)選取的。在另一種優(yōu)選實(shí)施方式中,可以獲取預(yù)設(shè)字符串中不同字符的數(shù)量,然后通過數(shù)字編號的方法對字符進(jìn)行映射,這種步驟可以進(jìn)一步保證映射過程的準(zhǔn)確性,減小出現(xiàn)錯誤的概率,這一優(yōu)選實(shí)現(xiàn)方式可以通過以下三個步驟來實(shí)現(xiàn)首先,獲取預(yù)設(shè)字符串中不同字符的數(shù)量M。然后,獲取預(yù)設(shè)字符串中的字符在字符映射表中的映射字符,其中,預(yù)設(shè)字符串中的字符按順序映射為O至M-I。最后,獲取與預(yù)設(shè)字符串中的字符不同的字符在字符映射表中的映射字符M。還是以預(yù)設(shè)字符串為“abc”和“bed”的情況為例,在這樣的情況下,預(yù)設(shè)字符串中有4個不同的字符,即a、b、c和d,那么M為4,將a映射為0,b映射為1,c映射為2,d映射為3,那么除了 a、b、c和d之外的所有字符都將被映射到4。步驟S304,接收輸入數(shù)據(jù)。
本實(shí)施例可以被運(yùn)用在防火墻上,因此,接收到的輸入數(shù)據(jù)可以是互聯(lián)網(wǎng)上的任意數(shù)據(jù)。步驟S306,獲取輸入數(shù)據(jù)中的字符在字符映射表中的映射字符。如前述映射方法,將a映射為0,b映射為1,c映射為2,d映射為3,那么除了 a、b、c和d之外的所有字符都將被映射到4,如果在本步驟中輸入數(shù)據(jù)是“abcefg”,根據(jù)該映射方法,輸入數(shù)據(jù)中的字符被逐個映射為012444。該技術(shù)可以被用于URL的過濾,因此可以獲取URL中與預(yù)設(shè)字符串中的字符相同的字符在字符映射表中的映射字符,并獲取URL中與預(yù)設(shè)字符串中的字符相同的字符在字符映射表中的映射字符M。步驟S308,將獲取到的映射字符組成的字符串與預(yù)設(shè)字符串在字符映射表中的映射的字符串相匹配。
匹配的過程有多種方式,常見的比如可以通過DFA來實(shí)現(xiàn),通過本實(shí)施例進(jìn)行字符集映射后,一般情況下,DFA的存儲空間可以大幅減少。與未進(jìn)行字符集映射的DFA相比,性能幾乎沒有下降(根據(jù)處理器的實(shí)際情況一般有所提高),而且本步驟和其他的DFA壓縮方法并不互斥,如果本實(shí)施例達(dá)到的壓縮效果不盡如人意,在性能允許的情況下,可以使用其他的DFA壓縮方式,進(jìn)一步降低內(nèi)存占用率。比如,根據(jù)DFA是一個稀疏矩陣的特點(diǎn),由于跳轉(zhuǎn)到O狀態(tài)的轉(zhuǎn)移都可以不做記錄,所以可以使用存儲(下標(biāo)、值)二元組的方式來壓縮一個稀疏矩陣。因此,在步驟S308以后,還可以獲取由經(jīng)過映射的輸入的數(shù)據(jù)中的字符構(gòu)成的矩陣,并存儲由矩陣的下標(biāo)和值組成的二元組以壓縮矩陣。在本實(shí)施例中,與未壓縮的DFA相比,性能幾乎沒有下降(根據(jù)處理器的實(shí)際情況可能略有提高),而且該步驟和其他的DFA壓縮方法不互斥,如果本方法達(dá)到的壓縮效果不盡如人意,在性能允許的情況下,可以使用其他的DFA壓縮方式,進(jìn)一步降低內(nèi)存占用率。圖4是根據(jù)本發(fā)明實(shí)施例的字符串的匹配方法的流程圖。如圖4所示,該字符串的匹配方法包括如下的步驟S401至步驟S407。步驟S401,獲取預(yù)設(shè)字符串,即被匹配字符串。步驟S402,獲取字符映射表。具體地,對于給定的多個被匹配字符串sl,s2, s3. ..SN,無論是平凡串還是正則表達(dá)式,假設(shè)每個字符串包含的字符集合為Cl,C2,C3....CN,則集合C =Cl U C2 U C3. . . U CN。假設(shè)C中包含的字符數(shù)為M。使用一個數(shù)組來完成如下映射f C- > {0,1,2, . . .M-1}f ! C- > {M}也就是所有被匹配字符串中出現(xiàn)的字符被分別映射到O M-1,未出現(xiàn)的字符被映射為M。使用這個f映射對原字符串sl,s2. . . SN做轉(zhuǎn)換,轉(zhuǎn)換得到sl’,s2’ . . . sN’。使用sl’,s2’ ....來進(jìn)行DFA轉(zhuǎn)換和合并,并可以輔以其它壓縮存儲方式。步驟S403,生成DFA圖。 步驟S404,獲取輸入數(shù)據(jù)。
步驟S405,將輸入數(shù)據(jù)中的字符按步驟S402中獲取的字符映射表進(jìn)行映射。步驟S406,將輸入數(shù)據(jù)中的字符映射的字符與預(yù)設(shè)字符串中的字符映射的字符進(jìn)行匹配。步驟S407,獲取匹配結(jié)果。對映射后的字符進(jìn)行DFA查找即可得到匹配結(jié)果??梢娫谄ヅ涞臅r候,需要多一次映射,這個字符映射表一般是一個256長度的數(shù)組,性能影響可以忽略不計(jì)。算上定長數(shù)組帶來的內(nèi)存分配和訪問性能的提高,實(shí)際性能反而有所提升。從以上的描述中,可以看出,本發(fā)明實(shí)施例提供的方法在內(nèi)存受限、需要進(jìn)行多模字符串匹配的場景下有廣泛使用,比如流行病毒的掃描、入侵防御系統(tǒng)、URL過濾和網(wǎng)頁關(guān)鍵字過濾系統(tǒng)等。在URL過濾的設(shè)備中,實(shí)際的用戶場景中,由于過濾規(guī)則包含的字符種類不多,使用本實(shí)施例提供的方法后,內(nèi)存壓縮60%以上,性能提升50%。 需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。顯然,本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以用通用的計(jì)算裝置來實(shí)現(xiàn),它們可以集中在單個的計(jì)算裝置上,或者分布在多個計(jì)算裝置所組成的網(wǎng)絡(luò)上,可選地,它們可以用計(jì)算裝置可執(zhí)行的程序代碼來實(shí)現(xiàn),從而,可以將它們存儲在存儲裝置中由計(jì)算裝置來執(zhí)行,或者將它們分別制作成各個集成電路模塊,或者將它們中的多個模塊或步驟制作成單個集成電路模塊來實(shí)現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種字符串的匹配方法,其特征在于,包括 獲取字符映射表,其中,在所述字符映射表中,所有與預(yù)設(shè)字符串中的字符不同的字符均對應(yīng)于第一映射字符,所述第一映射字符與所述預(yù)設(shè)字符串中的字符在所述字符映射表中的映射字符均不同; 接收輸入數(shù)據(jù); 獲取所述輸入數(shù)據(jù)中的字符在所述字符映射表中的映射字符;以及將獲取到的映射字符組成的字符串與所述預(yù)設(shè)字符串在所述字符映射表中的映射的字符串相匹配。
2.根據(jù)權(quán)利要求I所述的字符串的匹配方法,其特征在于,獲取字符映射表包括 獲取所述預(yù)設(shè)字符串中不同字符的數(shù)量M ; 獲取所述預(yù)設(shè)字符串中的字符在所述字符映射表中的映射字符,其中,所述預(yù)設(shè)字符串中的字符按順序映射為O至M-I ;以及 獲取與預(yù)設(shè)字符串中的字符不同的字符在所述字符映射表中的映射字符M。
3.根據(jù)權(quán)利要求2所述的字符串的匹配方法,其特征在于,獲取所述輸入數(shù)據(jù)中的字符在所述字符映射表中的映射字符包括 獲取URL中與預(yù)設(shè)字符串中的字符相同的字符在所述字符映射表中的映射字符;以及 獲取所述URL中與預(yù)設(shè)字符串中的字符相同的字符在所述字符映射表中的映射字符M0
4.根據(jù)權(quán)利要求I所述的字符串的匹配方法,其特征在于,獲取字符映射表包括 將與預(yù)設(shè)字符串中的字符相同的字符映射為所述字符本身;以及 將所有與預(yù)設(shè)字符串中的字符不同的字符映射為所述第一映射字符,其中,所述第一映射字符與所述預(yù)設(shè)字符串中的字符均不同。
5.根據(jù)權(quán)利要求I所述的字符串的匹配方法,其特征在于,將獲取到的映射字符組成的字符串與所述預(yù)設(shè)字符串在所述字符映射表中的映射的字符串相匹配之后,所述方法還包括 獲取由經(jīng)過映射的所述輸入的數(shù)據(jù)中的字符構(gòu)成的矩陣;以及 存儲由所述矩陣的下標(biāo)和值組成的二元組以壓縮所述矩陣。
6.一種字符串的匹配裝置,其特征在于,包括 第一獲取單元,用于獲取字符映射表,其中,在所述字符映射表中,所有與預(yù)設(shè)字符串中的字符不同的字符均對應(yīng)于第一映射字符,所述第一映射字符與所述預(yù)設(shè)字符串中的字符在所述字符映射表中的映射字符均不同; 接收單元,用于接收輸入數(shù)據(jù); 第二獲取單元,用于獲取所述輸入數(shù)據(jù)中的字符在所述字符映射表中的映射字符;以及 匹配單元,用于將獲取到的映射字符組成的字符串與所述預(yù)設(shè)字符串在所述字符映射表中的映射的字符串相匹配。
7.根據(jù)權(quán)利要求6所述的字符串的匹配裝置,其特征在于,所述第一獲取單元包括 第一獲取子單元,用于獲取所述預(yù)設(shè)字符串中不同字符的數(shù)量M ; 第二獲取子單元,用于獲取所述預(yù)設(shè)字符串中的字符在所述字符映射表中的映射字符,其中,所述預(yù)設(shè)字符串中的字符按順序映射為O至M-I ;以及 第三獲取子單元,用于獲取與預(yù)設(shè)字符串中的字符不同的字符在所述字符映射表中的映射字符M。
8.根據(jù)權(quán)利要求7所述的字符串的匹配裝置,其特征在于,所述第二獲取單元包括 第四獲取子單元,用于獲取URL中與預(yù)設(shè)字符串中的字符相同的字符在所述字符映射表中的映射字符;以及 第五獲取子單元,用于獲取所述URL中與預(yù)設(shè)字符串中的字符相同的字符在所述字符映射表中的映射字符M。
9.根據(jù)權(quán)利要求6所述的字符串的匹配裝置,其特征在于,所述第一獲取單元包括 第一映射子單元,用于將與預(yù)設(shè)字符串中的字符相同的字符映射為所述字符本身;以及 第二映射子單元,用于將所有與預(yù)設(shè)字符串中的字符不同的字符映射為所述第一映射字符,其中,所述第一映射字符與所述預(yù)設(shè)字符串中的字符均不同。
10.根據(jù)權(quán)利要求6所述的字符串的匹配裝置,其特征在于,所述裝置還包括 第三獲取單元,用于獲取由經(jīng)過映射的所述輸入的數(shù)據(jù)中的字符構(gòu)成的矩陣; 以及 壓縮單元,用于存儲由所述矩陣的下標(biāo)和值組成的二元組以壓縮所述矩陣。
全文摘要
本發(fā)明公開了一種字符串的匹配方法及裝置,該字符串的匹配方法包括獲取字符映射表,其中,在字符映射表中,所有與預(yù)設(shè)字符串中的字符不同的字符均對應(yīng)于第一映射字符,第一映射字符與預(yù)設(shè)字符串中的字符在字符映射表中的映射字符均不同;接收輸入數(shù)據(jù);獲取輸入數(shù)據(jù)中的字符在字符映射表中的映射字符;以及將獲取到的映射字符組成的字符串與預(yù)設(shè)字符串在字符映射表中的映射的字符串相匹配。通過本發(fā)明,將所有預(yù)設(shè)字符串中沒有出現(xiàn)過的字符都映射到同一個字符,因此在進(jìn)行匹配的過程中,僅需識別某一字符是否與預(yù)設(shè)字符串中的字符匹配,而不用分別識別各個未被匹配的字符,減小了進(jìn)行匹配時的內(nèi)存的占用,提高了匹配的速度和匹配的效率。
文檔編號G06F17/30GK102831232SQ20121031698
公開日2012年12月19日 申請日期2012年8月30日 優(yōu)先權(quán)日2012年8月30日
發(fā)明者常磊 申請人:山石網(wǎng)科通信技術(shù)(北京)有限公司