[發(fā)明專(zhuān)利]一種快速進(jìn)行多字符串匹配的方法有效
| 申請(qǐng)?zhí)枺?/td> | 201911068908.5 | 申請(qǐng)日: | 2019-11-04 |
| 公開(kāi)(公告)號(hào): | CN110825925B | 公開(kāi)(公告)日: | 2023-05-26 |
| 發(fā)明(設(shè)計(jì))人: | 沈華偉 | 申請(qǐng)(專(zhuān)利權(quán))人: | 沈華偉 |
| 主分類(lèi)號(hào): | G06F16/903 | 分類(lèi)號(hào): | G06F16/903 |
| 代理公司: | 上海思牛達(dá)專(zhuān)利代理事務(wù)所(特殊普通合伙) 31355 | 代理人: | 雍常明 |
| 地址: | 116000 遼寧省大連*** | 國(guó)省代碼: | 遼寧;21 |
| 權(quán)利要求書(shū): | 查看更多 | 說(shuō)明書(shū): | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 快速 進(jìn)行 多字 匹配 方法 | ||
1.一種快速進(jìn)行多字符串匹配的方法,其特征在于,包括以下步驟:
S1、當(dāng)程序在獲取到關(guān)鍵詞表之后自動(dòng)產(chǎn)生并構(gòu)造一張字符定位表,所述字符定位表的每一行是所述關(guān)鍵詞表里各個(gè)關(guān)鍵詞內(nèi)所有可能出現(xiàn)的字符,以字典順序(A~Z,a~z,0~9)保存,第N列是該字符在要進(jìn)行匹配的關(guān)鍵詞中出現(xiàn)在第N位的關(guān)鍵詞的編號(hào)集合;
S2、程序自左向右逐個(gè)掃描輸入字符,并執(zhí)行運(yùn)算過(guò)程;
所述運(yùn)算過(guò)程包括以下步驟:
(1)、定義候選集合s=();定義臨時(shí)候選集temp_s=();定義單詞內(nèi)位置指示器idx=0;定義輸入字符串中,各個(gè)單詞之間的分隔符為空白符(ASCII?0x20);
(2)、從輸入流中讀取一個(gè)字符,針對(duì)該字符,執(zhí)行以下運(yùn)算,若:
該字符為分隔符,執(zhí)行運(yùn)算步驟(3);
該字符為非分隔符,執(zhí)行運(yùn)算步驟(4);
該字符為輸入串末尾(0x00),完成運(yùn)算,退出匹配程序;
(3)、針對(duì)候選集s的情況,分別進(jìn)行以下運(yùn)算,若:
候選集s為空集合,匹配失敗,將臨時(shí)候選集temp_s重置為空集合,單詞內(nèi)位置指示器idx重置為0,連續(xù)讀取輸入字符直到讀取到分隔符,執(zhí)行運(yùn)算步驟(2);
候選集s為非空集合,查找s中保存的關(guān)鍵詞編號(hào)所對(duì)應(yīng)的關(guān)鍵詞中,是否存在一個(gè)關(guān)鍵詞w,其長(zhǎng)度與當(dāng)前的單詞內(nèi)位置指示器idx的值相等;若存在,則匹配成功,匹配到關(guān)鍵詞w,將臨時(shí)候選集temp_s重置為空集合,單詞內(nèi)位置指示器idx重置為0,執(zhí)行運(yùn)算步驟(2);若s中保存的關(guān)鍵詞編號(hào)所對(duì)應(yīng)的關(guān)鍵詞中,不存在長(zhǎng)度與當(dāng)前的單詞內(nèi)位置指示器idx的值相等的關(guān)鍵詞,則匹配失敗;連續(xù)讀取輸入字符直到讀取到分隔符,將候選集s與臨時(shí)候選集temp_s全部重置為空集合,單詞內(nèi)位置指示器idx重置為0,執(zhí)行運(yùn)算步驟(2);
(4)、由于字符定位表在構(gòu)造時(shí)以字典順序(A~Z,a~z,0~9)保存,故可以常數(shù)時(shí)間復(fù)雜度O(1)查找到當(dāng)前讀取到的字符在字符定位表中的行,以及當(dāng)前讀取到的字符在當(dāng)前單詞中的位置idx所對(duì)應(yīng)的列,由此得到字符定位表中對(duì)應(yīng)的單元格中,該字符出現(xiàn)在idx位置的關(guān)鍵詞集合d;針對(duì)集合d執(zhí)行以下運(yùn)算,若:
集合d為空集合,執(zhí)行運(yùn)算步驟(3);
集合d為非空集合,將集合d與候選集s取交集,賦予臨時(shí)候選集temp_s,temp_s=d∩s,執(zhí)行運(yùn)算步驟(5);
(5)、針對(duì)臨時(shí)候選集temp_s,若:
臨時(shí)候選集temp_s為空集合,執(zhí)行運(yùn)算步驟(3);
臨時(shí)候選集temp_s為非空集合,將臨時(shí)候選集temp_s賦予候選集s,形成新的候選集s,s=temp_s,單詞內(nèi)位置指示器idx的值加1,idx=idx+1,執(zhí)行運(yùn)算步驟(2)。
2.根據(jù)權(quán)利要求1所述的一種快速進(jìn)行多字符串匹配的方法,其特征在于:針對(duì)上述運(yùn)算步驟(3),根據(jù)匹配策略進(jìn)行調(diào)整,若算法要求的匹配策略為貪心匹配,則如上文所述,在候選集s中找到長(zhǎng)度與當(dāng)前idx值相等的關(guān)鍵字,即為匹配的關(guān)鍵字;若算法要求的匹配策略為非貪心匹配,則必須在當(dāng)前讀取輸入流的字符為分隔符時(shí),從s中查找與當(dāng)前idx值相等的關(guān)鍵字,找到即為匹配成功,未找到即為匹配失敗,繼續(xù)上述運(yùn)算步驟(2)。
3.根據(jù)權(quán)利要求1所述的一種快速進(jìn)行多字符串匹配的方法,其特征在于:本方法的輸入之一是一張關(guān)鍵詞表,關(guān)鍵詞表的每一行有且僅有一個(gè)關(guān)鍵詞,關(guān)鍵詞表的每一行被單獨(dú)賦予一個(gè)從0開(kāi)始的編號(hào),關(guān)鍵詞表中的每一行同時(shí)記錄關(guān)鍵詞的長(zhǎng)度。
該專(zhuān)利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專(zhuān)利權(quán)人授權(quán)。該專(zhuān)利全部權(quán)利屬于沈華偉,未經(jīng)沈華偉許可,擅自商用是侵權(quán)行為。如果您想購(gòu)買(mǎi)此專(zhuān)利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201911068908.5/1.html,轉(zhuǎn)載請(qǐng)聲明來(lái)源鉆瓜專(zhuān)利網(wǎng)。
- 請(qǐng)求沒(méi)有進(jìn)行IMS注冊(cè)的用戶(hù)進(jìn)行注冊(cè)的方法
- 對(duì)要進(jìn)行紋理操作的像素進(jìn)行分組
- 對(duì)餐盤(pán)進(jìn)行溫度調(diào)節(jié)和進(jìn)行分配的獨(dú)立小車(chē)
- 對(duì)圖像進(jìn)行編碼
- 對(duì)任務(wù)進(jìn)行調(diào)度
- 對(duì)任務(wù)進(jìn)行調(diào)度
- 蛋糕(甜蜜進(jìn)行時(shí))
- 對(duì)定位輔助數(shù)據(jù)進(jìn)行分級(jí)和分組以進(jìn)行廣播
- 對(duì)物體進(jìn)行分離和定向以進(jìn)行供料
- 對(duì)工件進(jìn)行評(píng)價(jià)以進(jìn)行加工的方法
- 存儲(chǔ)器子系統(tǒng)的多字元儲(chǔ)存/讀取方法以及其電路
- 跨平臺(tái)的字節(jié)序處理方法、裝置和字節(jié)碼運(yùn)行平臺(tái)
- 一種基于網(wǎng)絡(luò)流量多字段識(shí)別的人流量檢測(cè)方法及系統(tǒng)
- 存儲(chǔ)器讀取錯(cuò)誤糾正方法、系統(tǒng)、計(jì)算機(jī)設(shè)備和存儲(chǔ)介質(zhì)
- 一種多字輪儀表數(shù)字位置的檢測(cè)方法及檢測(cè)系統(tǒng)
- 一種基于多字典改進(jìn)型壓縮感知框架的內(nèi)窺鏡圖像感知重構(gòu)方法
- 電子價(jià)簽識(shí)別系統(tǒng)及方法、服務(wù)器
- 詞語(yǔ)語(yǔ)義模型的構(gòu)建方法、裝置、計(jì)算機(jī)設(shè)備及存儲(chǔ)介質(zhì)
- 新型多字型字庫(kù)、通過(guò)該字庫(kù)顯示不同字型的方法及裝置
- 在網(wǎng)絡(luò)中傳輸多字節(jié)字符的方法、裝置和產(chǎn)品





