国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種多模式下匹配字符串的方法及系統(tǒng)與流程

      文檔序號(hào):11802730閱讀:207來(lái)源:國(guó)知局
      本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,一種多模式下匹配字符串的方法及系統(tǒng)。

      背景技術(shù):
      字符串匹配算法在入侵檢測(cè),短消息過(guò)濾,信息查詢等領(lǐng)域尤其是入侵檢測(cè)方面均有重要的應(yīng)用。隨著網(wǎng)絡(luò)技術(shù)的發(fā)展和Internet的普及,網(wǎng)絡(luò)信息安全越來(lái)越受到人們的重視,現(xiàn)在社會(huì)是信息社會(huì),保障信息的安全已成為刻不容緩的重要課題。入侵檢測(cè)技術(shù)就是為保證信息系統(tǒng)的安全而設(shè)計(jì)的一種能夠及時(shí)發(fā)現(xiàn)并報(bào)告系統(tǒng)中未授權(quán)或者異常信息的技術(shù),具有主動(dòng)安全防范的特性,表現(xiàn)出良好的發(fā)展前景。而入侵檢測(cè)系統(tǒng)檢測(cè)引擎的核心即基于字符串匹配的特征匹配算法,這種檢測(cè)方法可以在主機(jī)或網(wǎng)絡(luò)數(shù)據(jù)中,通過(guò)準(zhǔn)確的字符串模式匹配查找攻擊簽名,從而判斷是否出現(xiàn)入侵。隨著網(wǎng)絡(luò)攻擊技術(shù)的發(fā)展和攻擊的多樣化,如何改進(jìn)字符串匹配算法,提高檢測(cè)效率,已成為入侵檢測(cè)系統(tǒng)研究的核心內(nèi)容。字符串匹配算法有很多,目前較常用的單模式字符串匹配算法是BM算法和KMP算法。應(yīng)用廣泛的入侵檢測(cè)系統(tǒng)snort就采用了BM算法,但它是一種單模式的字符串匹配算法,在單一模式的字符串匹配算法中,BM算法一般被認(rèn)為是性能最佳的。但在多模式字符串匹配過(guò)程中,BM算法需要對(duì)每一種模式分別進(jìn)行匹配,因此BM算法的性能就大大降低了。目前的多模式匹配算法,比較高效的有CW算法,AC-BM算法,SBMP算法等。其中,CW算法的思路是首先用模式集構(gòu)建一棵搜索樹,然后在文本中用搜索樹對(duì)模式進(jìn)行跳躍搜索,在構(gòu)建搜索樹時(shí),將模式從右邊對(duì)齊,從右往左進(jìn)行構(gòu)建,樹上相同的分支節(jié)點(diǎn)進(jìn)行合并。在進(jìn)行搜索時(shí),以搜索樹中模式的最短長(zhǎng)度為匹配窗長(zhǎng)度,文本從左往右匹配,在匹配窗內(nèi)搜索樹從右往左進(jìn)行匹配。如果在匹配過(guò)程中一旦出現(xiàn)不匹配,則整個(gè)匹配樹往右移動(dòng)。匹配樹往右移動(dòng)的位移表可以預(yù)先通過(guò)線性算法構(gòu)建。AC-BM算法非常類似于CW算法,采用了“壞字符”和“好后綴”兩種啟發(fā)式規(guī)則來(lái)進(jìn)行跳躍。SBMP算法也非常類似于CW算法,但只采用了“壞字符”啟發(fā)式規(guī)則來(lái)進(jìn)行跳躍。

      技術(shù)實(shí)現(xiàn)要素:
      本發(fā)明所要解決的技術(shù)問(wèn)題是,提供一種多模式下匹配字符串的方法及系統(tǒng),以解決提高字符串匹配效率的問(wèn)題。為了解決上述技術(shù)問(wèn)題,本發(fā)明公開了一種多模式下匹配字符串的方法,包括:存儲(chǔ)模式集信息,所述模式集信息至少包括各關(guān)鍵字的長(zhǎng)度和其首字母序號(hào);當(dāng)接收到字符串時(shí),從所接收的字符串中提取出待匹配字,然后從所存儲(chǔ)的模式集信息中查找長(zhǎng)度和首字母序號(hào)與所述待匹配字的長(zhǎng)度和首字母序號(hào)均相同的關(guān)鍵字,將所查找到的關(guān)鍵字與待匹配字比較,若比較結(jié)果一致,則此待匹配字匹配成功,否則匹配失敗。較佳地,上述方法中,通過(guò)一個(gè)數(shù)組存儲(chǔ)所述模式集信息,該用于存儲(chǔ)模式集信息的數(shù)組至少包括關(guān)鍵字長(zhǎng)度、關(guān)鍵字首字母序號(hào)以及關(guān)鍵字在模式集中可容忍沖突數(shù),其中,關(guān)鍵字在模式集中可容忍沖突數(shù)為模式集中關(guān)鍵字長(zhǎng)度以及關(guān)鍵字首字母序號(hào)均相同的關(guān)鍵字總數(shù),所述數(shù)組的值為關(guān)鍵字在模式集中的位置序號(hào)。較佳地,上述方法中,從所存儲(chǔ)的模式集信息中查找關(guān)鍵字長(zhǎng)度和關(guān)鍵字首字母序號(hào)與所述待匹配字的長(zhǎng)度和首字母序號(hào)均相同的關(guān)鍵字為多個(gè)時(shí),將所查找到的多個(gè)關(guān)鍵字依次與待匹配字進(jìn)行比較。較佳地,上述方法中,從所存儲(chǔ)的模式集信息中查找長(zhǎng)度和首字母序號(hào)與所述待匹配字的長(zhǎng)度和首字母序號(hào)均相同的關(guān)鍵字,將所查找到的關(guān)鍵字與待匹配字比較的過(guò)程如下:獲取所述待匹配字的長(zhǎng)度L及其首字母序號(hào)M,從用于存儲(chǔ)模式集信息的數(shù)組中查找長(zhǎng)度為L(zhǎng),首字母序號(hào)M、可容忍沖突數(shù)的值為0的數(shù)組元素,比較將所查找到的數(shù)組元素對(duì)應(yīng)的關(guān)鍵字與所述待匹配字是否一致,若比較結(jié)果一致,則匹配成功,若比較結(jié)果不一致,則更新數(shù)組元素的可容忍沖突數(shù)再?gòu)挠糜诖鎯?chǔ)模式集信息的數(shù)組中查找長(zhǎng)度為L(zhǎng),首字母序號(hào)M、可容忍沖突數(shù)為更新值的數(shù)組元素,比較所查找到的數(shù)組元素對(duì)應(yīng)的關(guān)鍵字與所述待匹配字是否一致,其中,所述數(shù)組元素的可容忍沖突數(shù)的更新值為上一個(gè)所要查找的數(shù)組元素的可容忍沖突數(shù)的值加1。較佳地,上述方法中,更新所要查找的數(shù)組元素時(shí),若更新操作次數(shù)達(dá)到設(shè)定次數(shù)時(shí),所提取出的關(guān)鍵字與所述待匹配字仍不一致時(shí),結(jié)束本方法的操作。本發(fā)明還公開了一種多模式下匹配字符串的系統(tǒng),包括:存儲(chǔ)單元,存儲(chǔ)模式集信息,所述模式集信息至少包括各關(guān)鍵字的長(zhǎng)度和其首字母序號(hào);匹配單元,當(dāng)接收到字符串時(shí),從所述字符串中提取出待匹配字,從所述存儲(chǔ)單元所存儲(chǔ)的模式集信息中查找長(zhǎng)度和首字母序號(hào)與所述待匹配字的長(zhǎng)度和首字母序號(hào)均相同的關(guān)鍵字,將所查找到的關(guān)鍵字與待匹配字比較,若比較結(jié)果一致,則所述待匹配字匹配成功,否則匹配失敗。較佳地,上述系統(tǒng)中,所述存儲(chǔ)單元,通過(guò)一個(gè)數(shù)組存儲(chǔ)模式集信息,該用于存儲(chǔ)模式集信息的數(shù)組至少包括關(guān)鍵字長(zhǎng)度、關(guān)鍵字首字母序號(hào)以及關(guān)鍵字在模式集中可容忍沖突數(shù),其中,關(guān)鍵字在模式集中可容忍沖突數(shù)為模式集中關(guān)鍵字長(zhǎng)度以及關(guān)鍵字首字母序號(hào)均相同的關(guān)鍵字總數(shù),所述數(shù)組的值等于關(guān)鍵字在模式集中的位置序號(hào)。較佳地,上述系統(tǒng)中,所述匹配單元從所述存儲(chǔ)單元所存儲(chǔ)的模式集信息中查找關(guān)鍵字長(zhǎng)度和關(guān)鍵字首字母序號(hào)與所述待匹配字的長(zhǎng)度和首字母序號(hào)均相同的關(guān)鍵字為多個(gè)時(shí),將所查找到的多個(gè)關(guān)鍵字依次與待匹配字進(jìn)行比較。較佳地,上述系統(tǒng)中,所述匹配單元包括處理模塊和更新模塊:所述處理模塊,獲取所述待匹配字的長(zhǎng)度L及其首字母序號(hào)M,從用于存儲(chǔ)模式集信息的數(shù)組Array中查找長(zhǎng)度為L(zhǎng),首字母序號(hào)M、可容忍沖突數(shù)的值為0的數(shù)據(jù)元素,比較所查找到數(shù)組元素對(duì)應(yīng)的關(guān)鍵字與所述待匹配字是否一致,若比較結(jié)果一致,則匹配成功,若當(dāng)比較結(jié)果不一致,向所述更新模塊發(fā)送更新通知,并從用于存儲(chǔ)模式集信息的數(shù)組中找出所述更新模塊更新的數(shù)據(jù)元素,若比較所查找到的數(shù)據(jù)元素對(duì)應(yīng)的關(guān)鍵字與所述待匹配字是否一致;所述更新模塊,按照所述處理模塊發(fā)送的更新通知,更新所要查找的數(shù)組元素,其中,更新的所要查找的數(shù)組元素的長(zhǎng)度保持為L(zhǎng)、首字母序號(hào)保持為M,可容忍沖突數(shù)的值為上一個(gè)所要查找的數(shù)組元素的可容忍沖突數(shù)的值加1。較佳地,上述系統(tǒng)中,所述更新模塊,更新所要查找的數(shù)組元素時(shí),若更新操作次數(shù)達(dá)到設(shè)定次數(shù)時(shí),則不再進(jìn)行更新操作。本申請(qǐng)技術(shù)方案通過(guò)構(gòu)建hash表提供了一種快速匹配字符串的匹配方案,尤其針對(duì)小規(guī)模的模式集,通過(guò)對(duì)欲匹配字符串進(jìn)行篩選,可以用極少的匹配次數(shù)完成字符串準(zhǔn)確匹配。附圖說(shuō)明圖1為本實(shí)施例中提取待匹配字后進(jìn)行匹配的流程圖。具體實(shí)施方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,下文將結(jié)合附圖對(duì)本發(fā)明技術(shù)方案作進(jìn)一步詳細(xì)說(shuō)明。需要說(shuō)明的是,在不沖突的情況下,本申請(qǐng)的實(shí)施例和實(shí)施例中的特征可以任意相互組合。實(shí)施例1本案申請(qǐng)人考慮到可以按照模式集中關(guān)鍵字的長(zhǎng)度和首字母對(duì)所要匹配的字符串先進(jìn)行一次篩選,再對(duì)篩選后的字符串進(jìn)行具體匹配,這樣就避免了所要匹配的字符串與每一個(gè)模式都進(jìn)行匹配,大大減少了匹配次數(shù),縮短了匹配時(shí)間即提高了匹配效率?;谏鲜鏊枷?,本實(shí)施例提供一種模式下匹配字符串的方法,包括:事先存儲(chǔ)模式集信息,該模式集信息至少包括各關(guān)鍵字的長(zhǎng)度和其首字母序號(hào);具體地,可通過(guò)一個(gè)三維的數(shù)組來(lái)存儲(chǔ)模式集信息,該用于存儲(chǔ)模式集信息的數(shù)組至少包括關(guān)鍵字長(zhǎng)度、關(guān)鍵字首字母序號(hào)以及關(guān)鍵字在模式集中可容忍沖突數(shù),這三個(gè)信息可以分別體現(xiàn)為數(shù)組的三個(gè)下標(biāo),即下標(biāo)的值分別表示關(guān)鍵字長(zhǎng)度、關(guān)鍵字首字母序號(hào)以及關(guān)鍵字在模式集中可容忍沖突數(shù)。其中,關(guān)鍵字在模式集中可容忍沖突數(shù)為模式集中關(guān)鍵字長(zhǎng)度以及關(guān)鍵字首字母序號(hào)均相同的關(guān)鍵字總數(shù),而每個(gè)數(shù)組元素的值等于關(guān)鍵字在模式集中的位置序號(hào)。本實(shí)施例中,假設(shè)模式集為{“NULL”,“image”,“img”,“input”,“style”},則用于存放模式集信息的三維數(shù)組中第一維指示模式長(zhǎng)度,例如模式“image”的長(zhǎng)度為5,第二維是關(guān)鍵字的首字母“i”的序號(hào),第三維為可容忍的沖突數(shù),如“image”與“input”的長(zhǎng)度都是5,首字母也都是“i”,則第一個(gè)出現(xiàn)的關(guān)鍵字“image”沖突值設(shè)為0,再次出現(xiàn)的依次加1,“input”沖突值為1。而數(shù)組值等于存儲(chǔ)序號(hào)即關(guān)鍵字在模式集中的位置,如“image”的序號(hào)為2。當(dāng)需要匹配字符串時(shí),從所收到的字符串中提取出待匹配字,再?gòu)氖孪却鎯?chǔ)的模式集信息中查找長(zhǎng)度和首字母序號(hào)與待匹配字的長(zhǎng)度和首字母序號(hào)均相同的關(guān)鍵字,將所查找到的關(guān)鍵字與待匹配字比較,若比較結(jié)果一致,即待匹配字匹配成功,反之則匹配失敗。其中,從需要匹配字符串中提取待匹配字時(shí),可以空格或標(biāo)點(diǎn)為分隔符為界提取待匹配字,所提取的待匹配字可能是某個(gè)文件的名字,也可能是某個(gè)Web頁(yè)面的腳本,具體根據(jù)使用者的要求所定。需要說(shuō)明的是,從所存儲(chǔ)的模式集信息中查找長(zhǎng)度和首字母序號(hào)與所述待匹配字的長(zhǎng)度和首字母序號(hào)均相同的關(guān)鍵字為多個(gè)時(shí),要將所查找到的多個(gè)關(guān)鍵字依次與待匹配字進(jìn)行比較。具體操作是,獲取所述待匹配字的長(zhǎng)度L及其首字母序號(hào)M,從用于存儲(chǔ)模式集信息的數(shù)組Array中查找長(zhǎng)度為L(zhǎng),首字母序號(hào)M、可容忍沖突數(shù)的值為0的數(shù)據(jù)元素,即提取Array[L][M][0],若Array[L][M][0]為-1(本實(shí)施例中設(shè)置數(shù)據(jù)元素的初始值為-1,即表示該數(shù)組中不存在長(zhǎng)度L、首字母序號(hào)M的關(guān)鍵字),說(shuō)明長(zhǎng)度或首字母序號(hào)不匹配,結(jié)束此匹配過(guò)程,否則根據(jù)所查找到的數(shù)組元素的值從模式集中提取出對(duì)應(yīng)的關(guān)鍵字,比較所提取出的關(guān)鍵字與所述待匹配字是否一致,當(dāng)比較結(jié)果不一致時(shí),則更新所要查找的數(shù)組元素的下標(biāo),查找更新后的數(shù)組元素,若更新的數(shù)據(jù)元素的值不為-1,則根據(jù)所查找到的數(shù)組元素的值從模式集中提取出對(duì)應(yīng)的關(guān)鍵字,比較所提取出的關(guān)鍵字與所述待匹配字是否一致,其中,更新后的數(shù)組元素的下標(biāo)中長(zhǎng)度保持為L(zhǎng)、首字母序號(hào)保持為M,可容忍沖突數(shù)的值為上一個(gè)所要查找的數(shù)組元素下標(biāo)中可容忍沖突數(shù)的值加1。為了避免重復(fù)進(jìn)行的更新操作對(duì)匹配效率有所影響,故優(yōu)選方案中提出,更新數(shù)組下標(biāo)時(shí),若更新操作次數(shù)達(dá)到設(shè)定次數(shù)(本實(shí)施例設(shè)定次數(shù)為3)時(shí),所提取出的關(guān)鍵字與所述待匹配字仍不一致時(shí),就結(jié)束整個(gè)流程。下面以模式集{“NULL”,“image”,“img”,“input”,“style”}、待匹配字符串“fragment”,“ice”,“inner”為例,說(shuō)明按照上述方法匹配字符串的具體過(guò)程,如圖1所示,該過(guò)程包括如下步驟:步驟100、構(gòu)建數(shù)組;該步驟中先初始化關(guān)鍵字的匹配數(shù)據(jù)緩沖區(qū),對(duì)要篩選的關(guān)鍵字的數(shù)據(jù)按照如下條件進(jìn)行預(yù)處理:第一維,字符串長(zhǎng)度:<=20*第二維,字母序號(hào):0-25*第三維,可容忍沖突數(shù):0-2*將預(yù)處理后的數(shù)據(jù)存入一數(shù)組中,針對(duì)模式集{“NULL”,“image”,“img”,“input”,“style”}所構(gòu)建的數(shù)組初始化如下:hash[4][13][0]=1,hash[5][8][0]=2,hash[3][8][0]=3,hash[5][8][1]=4,hash[5][18][0]=5;其他的數(shù)組元素值全部預(yù)設(shè)為-1。步驟200、接收待匹配字符串,從中提取待匹配字;從所接收到的字符串中提取出的待匹配字可能是某個(gè)文件的名字,也可能是某個(gè)Web頁(yè)面的腳本,具體根據(jù)使用者的要求所定。步驟300,從數(shù)組中查找待匹配字對(duì)應(yīng)的數(shù)組元素,再將待匹配字與所查找到的數(shù)組元素對(duì)應(yīng)的關(guān)鍵字進(jìn)行比較,若比較結(jié)果一致,則匹配,否則匹配失敗。該步驟中,按照待匹配字長(zhǎng)度和首字母序號(hào)進(jìn)行預(yù)處理,從預(yù)處理的數(shù)組中獲得對(duì)應(yīng)的相同長(zhǎng)度,相同首字母的關(guān)鍵字序號(hào),如果取得的關(guān)鍵字序號(hào)不為-1,則繼續(xù)比較字符串和提取出的關(guān)鍵字,最多比較設(shè)定次數(shù)(例如3次),就可以判斷本字符串是否是特殊字符串。以欲匹配字符串“fragment”,“ice”,“inner”為例?!癴ragment”長(zhǎng)度為8,首字母“f”對(duì)應(yīng)于5,獲取hash[8][5][0],在數(shù)組中hash[8][5][0]=-1,不符合模式集中的任一模式的長(zhǎng)度和首字母,所以“fragment”匹配不成功?!癷ce”長(zhǎng)度為3,首字母“i”對(duì)應(yīng)于8,獲取hash[3][8][0]的值為3,從模式集中取得序號(hào)為3的模式為“img”,比較兩個(gè)字符串“img”與“ice”,不相等,再獲取hash[3][8][1]的值,為-1說(shuō)明沒(méi)有其他符合這個(gè)長(zhǎng)度和首字母的模式,所以“ice”匹配不成功?!癷nner”長(zhǎng)度為5,首字母對(duì)應(yīng)于8,獲取hash[5][8][0]的值為2,從模式集中取得序號(hào)為2的模式為“image”,比較“image”與“inner”,不相等,再獲取hash[5][8][1]的值為4,從模式集中取序號(hào)為4的模式為“input”,比較“input”與“inner”,不相等,再次獲取hash[5][8][2]的值,發(fā)現(xiàn)為-1,所以“inner”匹配不成功。從上述例子來(lái)看,由于每個(gè)字符串最多比較3次,就可以判斷本字符串是否能與模式集中的某一模式匹配,對(duì)小規(guī)模的模式集來(lái)說(shuō),這是非常高效的。實(shí)施例2本實(shí)施例提供一種多模式下匹配字符串的系統(tǒng),可實(shí)現(xiàn)上述實(shí)施例1的匹配方法,該系統(tǒng)包括存儲(chǔ)單元和匹配單元。存儲(chǔ)單元,存儲(chǔ)模式集信息,模式集信息至少包括各關(guān)鍵字的長(zhǎng)度和其首字母序號(hào);其中,存儲(chǔ)單元,可以通過(guò)一個(gè)數(shù)組存儲(chǔ)模式集信息,該用于存儲(chǔ)模式集信息的數(shù)組至少包括關(guān)鍵字長(zhǎng)度、關(guān)鍵字首字母序號(hào)以及關(guān)鍵字在模式集中可容忍沖突數(shù)。其中,hash數(shù)組的值等于關(guān)鍵字在模式集中的位置序號(hào)。關(guān)鍵字在模式集中可容忍沖突數(shù)為模式集中關(guān)鍵字長(zhǎng)度以及關(guān)鍵字首字母序號(hào)均相同的關(guān)鍵字總數(shù)。匹配單元,當(dāng)接收到字符串時(shí),從中提取出待匹配字,從存儲(chǔ)單元所存儲(chǔ)的模式集信息中查找長(zhǎng)度和首字母序號(hào)與所述待匹配字的長(zhǎng)度和首字母序號(hào)均相同的關(guān)鍵字,將所查找到的關(guān)鍵字與待匹配字比較,若比較結(jié)果一致,則所接收到的字符串匹配成功,否則匹配失敗。需要說(shuō)明的是匹配單元從存儲(chǔ)單元所存儲(chǔ)的模式集信息中查找長(zhǎng)度和首字母序號(hào)與待匹配字的長(zhǎng)度和首字母序號(hào)均相同的關(guān)鍵字可能是一個(gè)也可能是多個(gè),當(dāng)是多個(gè)時(shí),將所查找到的多個(gè)關(guān)鍵字依次與待匹配字進(jìn)行比較。考慮到從所存儲(chǔ)的模式集信息中查找長(zhǎng)度和首字母序號(hào)與待匹配字的長(zhǎng)度和首字母序號(hào)均相同的關(guān)鍵字可能是多個(gè),故另有一些方案中提出,匹配單元可以分為處理模塊和更新模塊。處理模塊,獲取所述待匹配字的長(zhǎng)度L及其首字母序號(hào)M,從用于存儲(chǔ)模式集信息的數(shù)組Array中查找長(zhǎng)度為L(zhǎng),首字母序號(hào)M、可容忍沖突數(shù)的值為0的數(shù)據(jù)元素,即提取Array[L][M][0],若Array[L][M][0]為-1說(shuō)明長(zhǎng)度或首字母序號(hào)不匹配,結(jié)束此匹配過(guò)程,否則根據(jù)所查找到的元素值從模式集中提取出對(duì)應(yīng)的關(guān)鍵字,比較所提取出的關(guān)鍵字與所述待匹配字是否一致,當(dāng)比較結(jié)果不一致時(shí),向所述更新模塊發(fā)送更新通知,并從用于存儲(chǔ)模式集信息的數(shù)組中找出所述更新模塊更新的數(shù)據(jù)元素,若該數(shù)組元素的值不為-1,則根據(jù)所查找到的數(shù)據(jù)元素的值從模式集中提取出對(duì)應(yīng)的關(guān)鍵字,比較所提取出的關(guān)鍵字與所述待匹配字是否一致;更新模塊,按照所述更新模塊發(fā)送的更新通知,更新所要查找的數(shù)組元素的可容忍沖突數(shù)據(jù)的值,更新后的數(shù)組元素中長(zhǎng)度保持為L(zhǎng)、首字母序號(hào)保持為M,可容忍沖突數(shù)的值為上一個(gè)所要查找的數(shù)組元素中可容忍沖突數(shù)的值加1。本實(shí)施例中,可以通過(guò)三個(gè)下標(biāo)來(lái)指示各數(shù)組元素的關(guān)鍵字長(zhǎng)度、關(guān)鍵字首字母序號(hào),可容忍沖突數(shù)的值。這樣,更新模塊,更新所要查找的數(shù)據(jù)元素時(shí),保持兩個(gè)下標(biāo)值不變,僅更新一個(gè)下標(biāo)的值即可。也就是保持關(guān)鍵字長(zhǎng)度和關(guān)鍵字首字母序號(hào)不變,更新可容忍沖突數(shù)的值。由于更新操作過(guò)多可能會(huì)影響到匹配效率以及資源利用率,故優(yōu)選方案中,更新模塊更新所要查找的數(shù)組元素時(shí),若更新操作次數(shù)達(dá)到設(shè)定次數(shù)時(shí),則不再進(jìn)行更新操作。本領(lǐng)域普通技術(shù)人員可以理解上述方法中的全部或部分步驟可通過(guò)程序來(lái)指令相關(guān)硬件完成,所述程序可以存儲(chǔ)于計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,如只讀存儲(chǔ)器、磁盤或光盤等??蛇x地,上述實(shí)施例的全部或部分步驟也可以使用一個(gè)或多個(gè)集成電路來(lái)實(shí)現(xiàn)。相應(yīng)地,上述實(shí)施例中的各模塊/單元可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能模塊的形式實(shí)現(xiàn)。本申請(qǐng)不限制于任何特定形式的硬件和軟件的結(jié)合。從上述實(shí)施例可以看出,本申請(qǐng)技術(shù)方案在數(shù)組中添加了模式長(zhǎng)度和模式首字母這一變量,與一般的匹配方案不同,在匹配字符串時(shí)先對(duì)這個(gè)字符串做一次篩選,按照字符串的長(zhǎng)度和字符串的首字母,獲得對(duì)應(yīng)的數(shù)組元素值,也就是模式集中相同長(zhǎng)度相同首字母的模式的序號(hào),也就是按照長(zhǎng)度和首字母先進(jìn)行一次篩選,只有通過(guò)篩選的才繼續(xù)進(jìn)行匹配,這樣就避免了字符串與每一個(gè)模式都進(jìn)行匹配,大大減少了匹配次數(shù),縮短了匹配時(shí)間。尤其針對(duì)小規(guī)模的模式集,采用該方案進(jìn)行匹配效果極佳。以上所述,僅為本發(fā)明的較佳實(shí)例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
      當(dāng)前第1頁(yè)1 2 3 
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1