白丝美女被狂躁免费视频网站,500av导航大全精品,yw.193.cnc爆乳尤物未满,97se亚洲综合色区,аⅴ天堂中文在线网官网

首頁(yè) / 專利庫(kù) / 軟件 / 通配符 / 一種并行多模式匹配的方法及系統(tǒng)

一種并行多模式匹配的方法及系統(tǒng)

閱讀:1030發(fā)布:2020-10-18

專利匯可以提供一種并行多模式匹配的方法及系統(tǒng)專利檢索,專利查詢,專利分析的服務(wù)。并且本 發(fā)明 涉及一種并行多模式匹配的方法和系統(tǒng),所述系統(tǒng)包括:生成模 塊 ,用于讀取包含匹配規(guī)則的規(guī)則集,將所述規(guī)則集中包含 通配符 的匹配規(guī)則從通配符處分割成所述匹配規(guī)則的子規(guī)則,所述子規(guī)則中不包含通配符,所述規(guī)則集中不包含通配符的匹配規(guī)則作為其自身的子規(guī)則,并將所有子規(guī)則按照AC 算法 生成AC自動(dòng)機(jī),并輸出所述AC自動(dòng)機(jī);匹配模塊,用于讀取搜索對(duì)象和所述AC自動(dòng)機(jī),按AC算法應(yīng)用所述AC自動(dòng)機(jī)進(jìn)行搜索,判斷所述搜索對(duì)象是否按子規(guī)則在所述匹配規(guī)則中的順序匹配所述匹配規(guī)則的所有子規(guī)則,如果是,則所述搜索對(duì)象匹配所述匹配規(guī)則,并輸出匹配結(jié)果。從而既保留AC算法的高效性,又可以匹配含有通配符的非確定性規(guī)則。,下面是一種并行多模式匹配的方法及系統(tǒng)專利的具體信息內(nèi)容。

1.一種并行多模式匹配的系統(tǒng),其特征在于,包括:
生成模,用于讀取包含匹配規(guī)則的規(guī)則集,將所述規(guī)則集中包含通配符的匹配規(guī)則從通配符處分割成所述匹配規(guī)則的子規(guī)則,所述子規(guī)則中不包含通配符,所述規(guī)則集中不包含通配符的匹配規(guī)則作為其自身的子規(guī)則,并將所有子規(guī)則按照AC算法生成AC自動(dòng)機(jī),并輸出所述AC自動(dòng)機(jī);
匹配模塊,用于讀取搜索對(duì)象和所述AC自動(dòng)機(jī),按AC算法應(yīng)用所述AC自動(dòng)機(jī)進(jìn)行搜索,判斷所述搜索對(duì)象是否按子規(guī)則在所述匹配規(guī)則中的順序匹配所述匹配規(guī)則的所有子規(guī)則,如果是,則所述搜索對(duì)象匹配所述匹配規(guī)則,并輸出匹配結(jié)果。
2.如權(quán)利要求1所述的并行多模式匹配的系統(tǒng),其特征在于,所述生成模塊進(jìn)一步包括:
規(guī)則讀取模塊,用于進(jìn)行所述讀取包含匹配規(guī)則的規(guī)則集的過(guò)程;
自動(dòng)機(jī)生成模塊,用于進(jìn)行所述將所述規(guī)則集中包含通配符的匹配規(guī)則從通配符處分割成所述匹配規(guī)則的子規(guī)則,所述規(guī)則集中不包含通配符的匹配規(guī)則作為其自身的子規(guī)則,并將所有子規(guī)則按照AC算法生成AC自動(dòng)機(jī)的過(guò)程;
輸出模塊,用于進(jìn)行所述輸出所述AC自動(dòng)機(jī)的過(guò)程。
3.如權(quán)利要求2所述的并行多模式匹配的系統(tǒng),其特征在于,所述匹配模塊進(jìn)一步包括:
讀取模塊,用于進(jìn)行所述讀取搜索對(duì)象和所述AC自動(dòng)機(jī)的過(guò)程;
搜索模塊,用于進(jìn)行所述按AC算法應(yīng)用所述AC自動(dòng)機(jī)進(jìn)行搜索并判斷所述搜索對(duì)象是否按子規(guī)則在所述匹配規(guī)則中的順序匹配所述匹配規(guī)則的所有子規(guī)則,如果是,則所述搜索對(duì)象匹配所述匹配規(guī)則的過(guò)程;
匹配輸出模塊,用于進(jìn)行所述輸出匹配結(jié)果的過(guò)程。
4.如權(quán)利要求3所述的并行多模式匹配的系統(tǒng),其特征在于,所述自動(dòng)機(jī)生成模塊進(jìn)一步包括規(guī)則解析模塊、匹配狀態(tài)表生成模塊、AC狀態(tài)創(chuàng)建模塊和節(jié)點(diǎn)處理模塊,所述規(guī)則解析模塊,包括解析模塊和標(biāo)識(shí)模塊,所述解析模塊用于進(jìn)行所述將所述規(guī)則集中包含通配符的匹配規(guī)則從通配符處分割成所述匹配規(guī)則的子規(guī)則,所述規(guī)則集中不包含通配符的匹配規(guī)則作為其自身的子規(guī)則的過(guò)程,所述標(biāo)識(shí)模塊用于標(biāo)識(shí)匹配規(guī)則,并使用所述子規(guī)則所屬匹配規(guī)則的標(biāo)識(shí)和所述子規(guī)則在匹配規(guī)則中的順序號(hào)標(biāo)識(shí)所述子規(guī)則;
所述AC狀態(tài)創(chuàng)建模塊,用于進(jìn)行所述按照AC算法生成AC自動(dòng)機(jī)的過(guò)程;
所述節(jié)點(diǎn)處理模塊,用于生成節(jié)點(diǎn)規(guī)則表,以記錄在所述AC自動(dòng)機(jī)中的狀態(tài)節(jié)點(diǎn)處匹配的所有子規(guī)則標(biāo)識(shí),以供所述搜索模塊在搜索時(shí)進(jìn)行查找,并獲得當(dāng)前狀態(tài)節(jié)點(diǎn)處匹配的子規(guī)則標(biāo)識(shí);
所述匹配狀態(tài)表生成模塊,用于生成匹配狀態(tài)表,所述匹配狀態(tài)表中的一行對(duì)應(yīng)于所述規(guī)則集中的一個(gè)匹配規(guī)則,每行記錄對(duì)應(yīng)匹配規(guī)則包含的子規(guī)則總數(shù)和最近匹配的子規(guī)則的順序號(hào),以供所述搜索模塊在獲得所述匹配的子規(guī)則標(biāo)識(shí)后,依據(jù)所述匹配的子規(guī)則標(biāo)識(shí)進(jìn)行查找并更新所述匹配狀態(tài)表;
所述輸出模塊,還用于輸出所述匹配狀態(tài)表。
5.如權(quán)利要求4所述的并行多模式匹配的系統(tǒng),其特征在于,所述搜索模塊進(jìn)一步包括狀態(tài)轉(zhuǎn)移模塊和處理模塊,
所述狀態(tài)轉(zhuǎn)移模塊,用于按AC算法應(yīng)用所述AC自動(dòng)機(jī)搜索所述搜索對(duì)象,進(jìn)行狀態(tài)轉(zhuǎn)移;
所述處理模塊,用于在狀態(tài)節(jié)點(diǎn)為終態(tài)節(jié)點(diǎn)時(shí),查找所述節(jié)點(diǎn)規(guī)則表以獲得當(dāng)前終態(tài)節(jié)點(diǎn)匹配的子規(guī)則的標(biāo)識(shí),按查找到的子規(guī)則的標(biāo)識(shí)查找所述匹配狀態(tài)表,獲得所述終態(tài)節(jié)點(diǎn)匹配的子規(guī)則所屬匹配規(guī)則的子規(guī)則總數(shù)和最近匹配的子規(guī)則的順序號(hào),比較所述終態(tài)節(jié)點(diǎn)匹配的子規(guī)則的順序號(hào)和所述最近匹配的子規(guī)則的順序號(hào),如果所述子規(guī)則的順序號(hào)比所述最近匹配的子規(guī)則的順序號(hào)大于1,則根據(jù)所述終態(tài)節(jié)點(diǎn)匹配的子規(guī)則的順序號(hào)和所述子規(guī)則總數(shù)判斷所述子規(guī)則是否是最后一個(gè)子規(guī)則,如果是,則所述搜索對(duì)象同所述匹配規(guī)則匹配,如果不是,則更新匹配狀態(tài)表中所述最近匹配子規(guī)則的順序號(hào)為所述終態(tài)節(jié)點(diǎn)匹配的子規(guī)則的順序號(hào)。
6.一種并行多模式匹配的方法,其特征在于,包括:
步驟1,讀取包含匹配規(guī)則的規(guī)則集,將所述規(guī)則集中包含通配符的匹配規(guī)則從通配符處分割成所述匹配規(guī)則的子規(guī)則,所述子規(guī)則中不包含通配符,所述規(guī)則集中不包含通配符的匹配規(guī)則作為其自身的子規(guī)則,并將所有子規(guī)則按照AC算法生成AC自動(dòng)機(jī),并輸出所述AC自動(dòng)機(jī);
步驟2,讀取搜索對(duì)象和所述AC自動(dòng)機(jī),按AC算法應(yīng)用所述AC自動(dòng)機(jī)進(jìn)行搜索,判斷所述搜索對(duì)象是否按子規(guī)則在所述匹配規(guī)則中的順序匹配所述匹配規(guī)則的所有子規(guī)則,如果是,則所述搜索對(duì)象匹配所述匹配規(guī)則,并輸出匹配結(jié)果。
7.如權(quán)利要求6所述的并行多模式匹配的方法,其特征在于,所述步驟1進(jìn)一步包括,步驟71,標(biāo)識(shí)所述規(guī)則集的匹配規(guī)則,并在確定所述匹配規(guī)則的子規(guī)則后,使用所述子規(guī)則所屬匹配規(guī)則的標(biāo)識(shí)和所述子規(guī)則在匹配規(guī)則中的順序號(hào)標(biāo)識(shí)所述子規(guī)則;
步驟72,在生成所述AC自動(dòng)機(jī)后,生成節(jié)點(diǎn)規(guī)則表,記錄在所述AC自動(dòng)機(jī)中的狀態(tài)節(jié)點(diǎn)處匹配的所有子規(guī)則標(biāo)識(shí),以供在搜索時(shí)進(jìn)行查找,并獲得當(dāng)前狀態(tài)節(jié)點(diǎn)處匹配的子規(guī)則標(biāo)識(shí);
步驟73,生成匹配狀態(tài)表,所述匹配狀態(tài)表中的一行對(duì)應(yīng)于所述規(guī)則集中的一個(gè)匹配規(guī)則,每行記錄對(duì)應(yīng)匹配規(guī)則包含的子規(guī)則總數(shù)和最近匹配的子規(guī)則的順序號(hào),以供在搜索時(shí)獲得所述匹配的子規(guī)則標(biāo)識(shí)后,依據(jù)所述匹配的子規(guī)則標(biāo)識(shí)進(jìn)行查找并更新所述匹配狀態(tài)表;
步驟74,輸出所述匹配狀態(tài)表。
8.如權(quán)利要求7所述的并行多模式匹配的方法,其特征在于,所述步驟2進(jìn)一步包括,步驟81,按AC算法應(yīng)用所述AC自動(dòng)機(jī)搜索所述搜索對(duì)象,進(jìn)行狀態(tài)轉(zhuǎn)移;
步驟82,在狀態(tài)節(jié)點(diǎn)為終態(tài)節(jié)點(diǎn)時(shí),查找所述節(jié)點(diǎn)規(guī)則表以獲得匹配的子規(guī)則標(biāo)識(shí),查找匹配狀態(tài)表,獲得所述終態(tài)節(jié)點(diǎn)匹配的子規(guī)則所屬匹配規(guī)則的子規(guī)則總數(shù)和最近匹配的子規(guī)則的順序號(hào);
步驟83,判斷所述終態(tài)節(jié)點(diǎn)匹配的子規(guī)則的順序號(hào)是否比所述最近匹配的子規(guī)則的順序號(hào)大于1,如果大于1,則執(zhí)行步驟84;
步驟84,根據(jù)所述終態(tài)節(jié)點(diǎn)匹配的子規(guī)則的順序號(hào)和所述子規(guī)則總數(shù)判斷所述終態(tài)節(jié)點(diǎn)匹配的子規(guī)則是否是最后一個(gè)子規(guī)則,如果是,則所述搜索對(duì)象同所述匹配規(guī)則匹配,如果不是,則更新匹配狀態(tài)表中所述最近匹配子規(guī)則的順序號(hào)為所述終態(tài)節(jié)點(diǎn)匹配的子規(guī)則的順序號(hào)。

說(shuō)明書(shū)全文

一種并行多模式匹配的方法及系統(tǒng)

技術(shù)領(lǐng)域

[0001] 本發(fā)明屬于文本或網(wǎng)絡(luò)內(nèi)容處理技術(shù)領(lǐng)域,尤其涉及一種并行多模式匹配方法及系統(tǒng)。

背景技術(shù)

[0002] 多模式匹配(Multiple Pattern String Matching)是計(jì)算機(jī)科學(xué)領(lǐng)域中的基本問(wèn)題之一,用于快速判斷某一數(shù)據(jù)中是否包含規(guī)則集中的某一或某些規(guī)則。多模式匹配技術(shù)廣泛應(yīng)用于文本處理、網(wǎng)絡(luò)內(nèi)容分析、入侵檢測(cè)、生物信息學(xué)、信息檢索等領(lǐng)域。
[0003] 解決并行多模式匹配問(wèn)題的經(jīng)典方法之一,是基于有限狀態(tài)自動(dòng)機(jī)的方法。該方法最初由Alfred V.Aho和Margaret J.Corasick于1975年提出,通常以發(fā)明者的名字簡(jiǎn)稱為AC多模式匹配算法。AC算法的突出優(yōu)點(diǎn)在于其具有相同的最壞和平均性能,可用于處理各種模式集合(例如:不等長(zhǎng)、大規(guī)模),是一種高性能的多模式匹配方法。
[0004] 圖1為AC算法一個(gè)具體實(shí)施例的AC自動(dòng)機(jī)。規(guī)則集為用于多模式匹配的匹配規(guī)則的集合,該實(shí)施例中的規(guī)則集為{she,he,hers,his},匹配規(guī)則為she、he、hers和his。AC自動(dòng)機(jī)用于進(jìn)行狀態(tài)轉(zhuǎn)移,圖1中的節(jié)點(diǎn)為表示狀態(tài)的狀態(tài)節(jié)點(diǎn)。根據(jù)AC算法,規(guī)則集中每個(gè)匹配規(guī)則都可以由一條從初始狀態(tài)節(jié)點(diǎn)0出發(fā)的路徑標(biāo)識(shí)出來(lái),該路徑的終點(diǎn)為終態(tài)節(jié)點(diǎn)。在圖1中,匹配規(guī)則she由初始狀態(tài)節(jié)點(diǎn)0到狀態(tài)節(jié)點(diǎn)5的路徑標(biāo)識(shí)出來(lái),狀態(tài)節(jié)點(diǎn)5為終態(tài)節(jié)點(diǎn);匹配規(guī)則he由初始狀態(tài)節(jié)點(diǎn)0到狀態(tài)節(jié)點(diǎn)2的路徑標(biāo)識(shí)出來(lái),狀態(tài)節(jié)點(diǎn)
2為終態(tài)節(jié)點(diǎn);匹配規(guī)則hers由初始狀態(tài)節(jié)點(diǎn)0到狀態(tài)節(jié)點(diǎn)9的路徑標(biāo)識(shí)出來(lái),狀態(tài)節(jié)點(diǎn)
9為終態(tài)節(jié)點(diǎn);匹配規(guī)則his由初始狀態(tài)節(jié)點(diǎn)0到狀態(tài)節(jié)點(diǎn)7的路徑標(biāo)識(shí)出來(lái),狀態(tài)節(jié)點(diǎn)7為終態(tài)節(jié)點(diǎn)。
[0005] 對(duì)于各種確定性規(guī)則的模式匹配來(lái)說(shuō),AC算法(以及其變種)無(wú)疑是個(gè)非常優(yōu)秀的算法,但卻無(wú)法處理含有通配符的非確定性規(guī)則的匹配。

發(fā)明內(nèi)容

[0006] 為解決上述問(wèn)題,本發(fā)明提供了一種并行多模式匹配的方法及系統(tǒng),應(yīng)用AC算法來(lái)處理含有通配符的非確定規(guī)則的并行多模式匹配。
[0007] 本發(fā)明公開(kāi)了一種并行多模式匹配的系統(tǒng),包括:
[0008] 生成模塊,用于讀取包含匹配規(guī)則的規(guī)則集,將所述規(guī)則集中包含通配符的匹配規(guī)則從通配符處分割成所述匹配規(guī)則的子規(guī)則,所述子規(guī)則中不包含通配符,所述規(guī)則集中不包含通配符的匹配規(guī)則作為其自身的子規(guī)則,并將所有子規(guī)則按照AC算法生成AC自動(dòng)機(jī),并輸出所述AC自動(dòng)機(jī);
[0009] 匹配模塊,用于讀取搜索對(duì)象和所述AC自動(dòng)機(jī),按AC算法應(yīng)用所述AC自動(dòng)機(jī)進(jìn)行搜索,判斷所述搜索對(duì)象是否按子規(guī)則在所述匹配規(guī)則中的順序匹配所述匹配規(guī)則的所有子規(guī)則,如果是,則所述搜索對(duì)象匹配所述匹配規(guī)則,并輸出匹配結(jié)果。
[0010] 所述生成模塊進(jìn)一步包括:
[0011] 規(guī)則讀取模塊,用于進(jìn)行所述讀取包含匹配規(guī)則的規(guī)則集的過(guò)程;
[0012] 自動(dòng)機(jī)生成模塊,用于進(jìn)行所述將所述規(guī)則集中包含通配符的匹配規(guī)則從通配符處分割成所述匹配規(guī)則的子規(guī)則,所述規(guī)則集中不包含通配符的匹配規(guī)則作為其自身的子規(guī)則,并將所有子規(guī)則按照AC算法生成AC自動(dòng)機(jī)的過(guò)程;
[0013] 輸出模塊,用于進(jìn)行所述輸出所述AC自動(dòng)機(jī)的過(guò)程。
[0014] 所述匹配模塊進(jìn)一步包括:
[0015] 讀取模塊,用于進(jìn)行所述讀取搜索對(duì)象和所述AC自動(dòng)機(jī)的過(guò)程;
[0016] 搜索模塊,用于進(jìn)行所述按AC算法應(yīng)用所述AC自動(dòng)機(jī)進(jìn)行搜索并判斷所述搜索對(duì)象是否按子規(guī)則在所述匹配規(guī)則中的順序匹配所述匹配規(guī)則的所有子規(guī)則,如果是,則所述搜索對(duì)象匹配所述匹配規(guī)則的過(guò)程;
[0017] 匹配輸出模塊,用于進(jìn)行所述輸出匹配結(jié)果的過(guò)程。
[0018] 所述自動(dòng)機(jī)生成模塊進(jìn)一步包括規(guī)則解析模塊、匹配狀態(tài)表生成模塊、AC狀態(tài)創(chuàng)建模塊和節(jié)點(diǎn)處理模塊,
[0019] 所述規(guī)則解析模塊,包括解析模塊和標(biāo)識(shí)模塊,所述解析模塊用于進(jìn)行所述將所述規(guī)則集中包含通配符的匹配規(guī)則從通配符處分割成所述匹配規(guī)則的子規(guī)則,所述規(guī)則集中不包含通配符的匹配規(guī)則作為其自身的子規(guī)則的過(guò)程,所述標(biāo)識(shí)模塊用于標(biāo)識(shí)匹配規(guī)則,并使用所述子規(guī)則所屬匹配規(guī)則的標(biāo)識(shí)和所述子規(guī)則在匹配規(guī)則中的順序號(hào)標(biāo)識(shí)所述子規(guī)則;
[0020] 所述AC狀態(tài)創(chuàng)建模塊,用于進(jìn)行所述按照AC算法生成AC自動(dòng)機(jī)的過(guò)程;
[0021] 所述節(jié)點(diǎn)處理模塊,用于生成節(jié)點(diǎn)規(guī)則表,以記錄在所述AC自動(dòng)機(jī)中的狀態(tài)節(jié)點(diǎn)處匹配的所有子規(guī)則標(biāo)識(shí),以供所述搜索模塊在搜索時(shí)進(jìn)行查找,并獲得當(dāng)前狀態(tài)節(jié)點(diǎn)處匹配的子規(guī)則標(biāo)識(shí);
[0022] 所述匹配狀態(tài)表生成模塊,用于生成匹配狀態(tài)表,所述匹配狀態(tài)表中的一行對(duì)應(yīng)于所述規(guī)則集中的一個(gè)匹配規(guī)則,每行記錄對(duì)應(yīng)匹配規(guī)則包含的子規(guī)則總數(shù)和最近匹配的子規(guī)則的順序號(hào),以供所述搜索模塊在獲得所述匹配的子規(guī)則標(biāo)識(shí)后,依據(jù)所述匹配的子規(guī)則標(biāo)識(shí)進(jìn)行查找并更新所述匹配狀態(tài)表;
[0023] 所述輸出模塊,還用于輸出所述匹配狀態(tài)表。
[0024] 所述搜索模塊進(jìn)一步包括狀態(tài)轉(zhuǎn)移模塊和處理模塊,
[0025] 所述狀態(tài)轉(zhuǎn)移模塊,用于按AC算法應(yīng)用所述AC自動(dòng)機(jī)搜索所述搜索對(duì)象,進(jìn)行狀態(tài)轉(zhuǎn)移;
[0026] 所述處理模塊,用于查找所述節(jié)點(diǎn)規(guī)則表以獲得當(dāng)前狀態(tài)節(jié)點(diǎn)匹配的子規(guī)則標(biāo)識(shí),按所述子規(guī)則標(biāo)識(shí)查找所述匹配狀態(tài)表,獲得所述子規(guī)則所屬匹配規(guī)則的子規(guī)則總數(shù)和最近匹配的子規(guī)則順序號(hào),比較所述子規(guī)則順序號(hào)和所述最近匹配的子規(guī)則順序號(hào),如果所述子規(guī)則順序號(hào)比所述最近匹配的子規(guī)則順序號(hào)大于1,則根據(jù)所述子規(guī)則順序號(hào)和所述子規(guī)則總數(shù)判斷所述子規(guī)則是否是最后一個(gè)子規(guī)則,如果是,則所述搜索對(duì)象同所述匹配規(guī)則匹配,如果不是,則更新匹配狀態(tài)表中所述最近匹配子規(guī)則順序號(hào)為所述子規(guī)則的順序號(hào)。
[0027] 本發(fā)明還公開(kāi)了一種并行多模式匹配的方法,包括:
[0028] 步驟1,讀取包含匹配規(guī)則的規(guī)則集,將所述規(guī)則集中包含通配符的匹配規(guī)則從通配符處分割成所述匹配規(guī)則的子規(guī)則,所述子規(guī)則中不包含通配符,所述規(guī)則集中不包含通配符的匹配規(guī)則作為其自身的子規(guī)則,并將所有子規(guī)則按照AC算法生成AC自動(dòng)機(jī),并輸出所述AC自動(dòng)機(jī);
[0029] 步驟2,讀取搜索對(duì)象和所述AC自動(dòng)機(jī),按AC算法應(yīng)用所述AC自動(dòng)機(jī)進(jìn)行搜索,判斷所述搜索對(duì)象是否按子規(guī)則在所述匹配規(guī)則中的順序匹配所述匹配規(guī)則的所有子規(guī)則,如果是,則所述搜索對(duì)象匹配所述匹配規(guī)則,并輸出匹配結(jié)果。
[0030] 所述步驟1進(jìn)一步包括,
[0031] 步驟71,標(biāo)識(shí)所述規(guī)則集的匹配規(guī)則,并在確定所述匹配規(guī)則的子規(guī)則后,使用所述子規(guī)則所屬匹配規(guī)則的標(biāo)識(shí)和所述子規(guī)則在匹配規(guī)則中的順序號(hào)標(biāo)識(shí)所述子規(guī)則;
[0032] 步驟72,在生成所述AC自動(dòng)機(jī)后,生成節(jié)點(diǎn)規(guī)則表,記錄在所述AC自動(dòng)機(jī)中的狀態(tài)節(jié)點(diǎn)處匹配的所有子規(guī)則標(biāo)識(shí),以供在搜索時(shí)進(jìn)行查找,并獲得當(dāng)前狀態(tài)節(jié)點(diǎn)處匹配的子規(guī)則標(biāo)識(shí);
[0033] 步驟73,生成匹配狀態(tài)表,所述匹配狀態(tài)表中的一行對(duì)應(yīng)于所述規(guī)則集中的一個(gè)匹配規(guī)則,每行記錄對(duì)應(yīng)匹配規(guī)則包含的子規(guī)則總數(shù)和最近匹配的子規(guī)則的順序號(hào),以供在搜索時(shí)獲得所述匹配的子規(guī)則標(biāo)識(shí)后,依據(jù)所述匹配的子規(guī)則標(biāo)識(shí)進(jìn)行查找并更新所述匹配狀態(tài)表;
[0034] 步驟74,輸出所述匹配狀態(tài)表。
[0035] 所述步驟2進(jìn)一步包括,
[0036] 步驟81,按AC算法應(yīng)用所述AC自動(dòng)機(jī)搜索所述搜索對(duì)象,進(jìn)行狀態(tài)轉(zhuǎn)移;
[0037] 步驟82,查找所述節(jié)點(diǎn)規(guī)則表以獲得匹配的子規(guī)則標(biāo)識(shí),查找匹配狀態(tài)表,獲得所述子規(guī)則所屬匹配規(guī)則的子規(guī)則總數(shù)和最近匹配的子規(guī)則順序號(hào);
[0038] 步驟83,判斷所述子規(guī)則順序號(hào)是否比所述最近匹配的子規(guī)則順序號(hào)大于1,如果大于1,則執(zhí)行步驟84;
[0039] 步驟84,根據(jù)所述子規(guī)則順序號(hào)和所述子規(guī)則總數(shù)判斷所述子規(guī)則是否是最后一個(gè)子規(guī)則,如果是,則所述搜索對(duì)象同所述匹配規(guī)則匹配,如果不是,則更新匹配狀態(tài)表中所述最近匹配子規(guī)則順序號(hào)為所述子規(guī)則的順序號(hào)。
[0040] 本發(fā)明的有益效果在于,克服了AC算法不能處理含有通配符的非確定性規(guī)則的匹配問(wèn)題,既保留了AC算法的高效性,又可以匹配含有通配符的非確定性規(guī)則。附圖說(shuō)明
[0041] 圖1是AC算法的AC自動(dòng)機(jī)示意圖;
[0042] 圖2是本發(fā)明的系統(tǒng)結(jié)構(gòu)示意圖;
[0043] 圖3是本發(fā)明的方法流程圖
[0044] 圖4是本發(fā)明的生成模塊結(jié)構(gòu)示意圖;
[0045] 圖5是本發(fā)明的自動(dòng)機(jī)生成模塊結(jié)構(gòu)示意圖;
[0046] 圖6是本發(fā)明的匹配模塊結(jié)構(gòu)示意圖;
[0047] 圖7是本發(fā)明的搜索模塊結(jié)構(gòu)示意圖;
[0048] 圖8是本發(fā)明方法具體實(shí)施例的流程圖。

具體實(shí)施方式

[0049] 為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0050] 本發(fā)明系統(tǒng)2,包括生成模塊201和匹配模塊202組成,如圖2所示。
[0051] 生成模塊201,用于讀取包含通配符的匹配規(guī)則的規(guī)則集,將所述規(guī)則集中包含通配符的匹配規(guī)則從通配符處分割成所述匹配規(guī)則的子規(guī)則,所述子規(guī)則中不包含通配符,所述規(guī)則集中不包含通配符的匹配規(guī)則作為其自身的子規(guī)則,將規(guī)則集中匹配規(guī)則用該匹配規(guī)則的子規(guī)則替換,從而使替換后的規(guī)則集中不包含通配符,按照AC算法生成對(duì)應(yīng)于替換后的規(guī)則集的AC自動(dòng)機(jī),并輸出所述AC自動(dòng)機(jī),對(duì)于不包含通配符的匹配規(guī)則,由于其子規(guī)則是其自身,所以規(guī)則集中不包含通配符的匹配規(guī)則可以不做替換直接保留;
[0052] 匹配模塊202,用于讀取搜索對(duì)象和所述AC自動(dòng)機(jī),按AC算法應(yīng)用所述AC自動(dòng)機(jī)進(jìn)行搜索,判斷所述搜索對(duì)象是否按子規(guī)則在所述匹配規(guī)則中的順序匹配所述匹配規(guī)則的所有子規(guī)則,如果是,則所述搜索對(duì)象匹配所述匹配規(guī)則,并輸出匹配結(jié)果。
[0053] 本發(fā)明的方法如圖3所示,包括:
[0054] 步驟S301,讀取包含通配符的匹配規(guī)則的規(guī)則集,將所述規(guī)則集中包含通配符的匹配規(guī)則從通配符處分割成所述匹配規(guī)則的子規(guī)則,所述子規(guī)則中不包含通配符,所述規(guī)則集中不包含通配符的匹配規(guī)則作為其自身的子規(guī)則,將規(guī)則集中匹配規(guī)則用該匹配規(guī)則的子規(guī)則替換,從而使替換后的規(guī)則集中不包含通配符,按照AC算法生成對(duì)應(yīng)于替換后的規(guī)則集的AC自動(dòng)機(jī),并輸出所述AC自動(dòng)機(jī),對(duì)于不包含通配符的匹配規(guī)則,由于其子規(guī)則是其自身,所以規(guī)則集中不包含通配符的匹配規(guī)則可以不做替換直接保留。
[0055] 步驟S302,讀取搜索對(duì)象和所述AC自動(dòng)機(jī),按AC算法應(yīng)用所述AC自動(dòng)機(jī)進(jìn)行搜索,判斷所述搜索對(duì)象是否按子規(guī)則在所述匹配規(guī)則中的順序匹配所述匹配規(guī)則的所有子規(guī)則,如果是,則所述搜索對(duì)象匹配所述匹配規(guī)則,并輸出匹配結(jié)果。
[0056] 生成模塊201包括,規(guī)則讀取模塊401、自動(dòng)機(jī)生成模塊402和輸出模塊403,如圖4所示。
[0057] 規(guī)則讀取模塊401,用以逐條讀去規(guī)則集中的匹配規(guī)則,并發(fā)送給自動(dòng)機(jī)生成模塊402。如果匹配規(guī)則是保存在文件中,則進(jìn)一步用于在逐行讀取匹配規(guī)則前打開(kāi)文件。
[0058] 自動(dòng)機(jī)生成模塊402,用以判斷規(guī)則集中各個(gè)匹配規(guī)則是否包含通配符,如果包含,則從通配符處將匹配規(guī)則分割成所述匹配規(guī)則的子規(guī)則,所述子規(guī)則中不包含通配符,如果不包含,則所述匹配規(guī)則作為其自身的子規(guī)則,將規(guī)則集中匹配規(guī)則用該匹配規(guī)則的子規(guī)則替換,從而使替換后的規(guī)則集中不包含通配符,按照AC算法生成匹配轉(zhuǎn)換后的規(guī)則集的AC自動(dòng)機(jī),并生成匹配狀態(tài)表和節(jié)點(diǎn)規(guī)則表,匹配狀態(tài)表用以記錄匹配規(guī)則的匹配狀態(tài),節(jié)點(diǎn)規(guī)則集用以記錄在所述AC自動(dòng)機(jī)的終態(tài)節(jié)點(diǎn)處匹配的所有子規(guī)則,并將AC自動(dòng)機(jī)和匹配狀態(tài)表發(fā)送給輸出模塊403。
[0059] 輸出模塊403,用以輸出AC自動(dòng)機(jī)和匹配狀態(tài)表。
[0060] 自動(dòng)機(jī)生成模塊402包括,規(guī)則解析模塊501、匹配狀態(tài)表生成模塊502、AC狀態(tài)創(chuàng)建模塊503和節(jié)點(diǎn)處理模塊504,如圖5所示。
[0061] 規(guī)則解析模塊501,包括解析模塊510和標(biāo)識(shí)模塊511。
[0062] 解析模塊510,用于逐條判斷規(guī)則集中的匹配規(guī)則是否包含通配符,如果包含,則查找匹配規(guī)則中通配符的位置,在通配符位置處將匹配規(guī)則分割為不包含通配符的子規(guī)則,如果不包含,則所述匹配規(guī)則作為其自身的子規(guī)則,將規(guī)則集中的匹配規(guī)則用該匹配規(guī)則的子規(guī)則替換,使規(guī)則集轉(zhuǎn)換為不包含通配符的規(guī)則集。
[0063] 標(biāo)識(shí)模塊511,用于標(biāo)識(shí)匹配規(guī)則,并使用子規(guī)則所屬匹配規(guī)則的標(biāo)識(shí)和子規(guī)則在所屬匹配規(guī)則中的順序號(hào)標(biāo)識(shí)子規(guī)則;
[0064] 例如,一個(gè)匹配規(guī)則“334566*990000”,標(biāo)識(shí)該匹配規(guī)則為23,該規(guī)則包含一個(gè)通配符“*”,被分割為兩個(gè)子規(guī)則“334566”和“990000”,子規(guī)則的順序號(hào)分別是1和2。采用二維數(shù)組將兩個(gè)子規(guī)則分別標(biāo)識(shí)為(23,1)和(23,2)。又如,一個(gè)不含通配符的匹配規(guī)則“323457789”標(biāo)識(shí)為24,則該匹配規(guī)則的子規(guī)則標(biāo)識(shí)為(24,1)。
[0065] 匹配狀態(tài)表生成模塊502,用于生成匹配狀態(tài)表,所述匹配狀態(tài)表中的一行對(duì)應(yīng)于所述規(guī)則集中的一個(gè)匹配規(guī)則,每行記錄對(duì)應(yīng)匹配規(guī)則包含的子規(guī)則總數(shù)和最近匹配的子規(guī)則的順序號(hào),以供所述搜索模塊602在獲得所述匹配的子規(guī)則標(biāo)識(shí)后,依據(jù)所述匹配的子規(guī)則標(biāo)識(shí)進(jìn)行查找并更新所述匹配狀態(tài)表。
[0066] 例如,規(guī)則集中有N個(gè)匹配規(guī)則,建立一個(gè)N×2的二維表格,其中行號(hào)表示匹配規(guī)則的標(biāo)識(shí),第1列表示該匹配規(guī)則包含的子規(guī)則總數(shù),第2列表示最近匹配的子規(guī)則的順序號(hào),并且每個(gè)匹配規(guī)則的最近匹配的子規(guī)則的順序號(hào)初始化為0。
[0067] AC狀態(tài)創(chuàng)建模塊503,用于對(duì)應(yīng)于轉(zhuǎn)換后的規(guī)則集,按AC算法生成AC自動(dòng)機(jī)。
[0068] 節(jié)點(diǎn)處理模塊504,用于生成節(jié)點(diǎn)規(guī)則表,記錄在所述AC自動(dòng)機(jī)中的終態(tài)節(jié)點(diǎn)處匹配的所有子規(guī)則,搜索模塊602在搜索時(shí)進(jìn)行查找,并獲得當(dāng)前終態(tài)節(jié)點(diǎn)處匹配的子規(guī)則標(biāo)識(shí)。
[0069] 具體實(shí)施方式為,對(duì)應(yīng)于每個(gè)終態(tài)節(jié)點(diǎn)建立一個(gè)鏈表,鏈表中存有該終態(tài)節(jié)點(diǎn)對(duì)應(yīng)的子規(guī)則標(biāo)識(shí)。其中的子規(guī)則標(biāo)識(shí)為所述的二維數(shù)組,例如(23,2),表示第23條匹配規(guī)則的第2個(gè)子規(guī)則以該狀態(tài)節(jié)點(diǎn)為終態(tài)節(jié)點(diǎn)。
[0070] 匹配模塊202包括,讀取模塊601、搜索模塊602和匹配輸出模塊603,如圖6所示。
[0071] 讀取模塊601,用于讀取搜索對(duì)象、AC自動(dòng)機(jī)和匹配狀態(tài)表,并將其發(fā)送給搜索模塊602。
[0072] 搜索模塊602,用于按AC算法應(yīng)用AC自動(dòng)機(jī)對(duì)搜索對(duì)象進(jìn)行搜索,判斷搜索對(duì)象是否按子規(guī)則在匹配規(guī)則中的順序匹配所述匹配規(guī)則的所有子規(guī)則,如果是,則匹配所述匹配規(guī)則。
[0073] 匹配輸出模塊603,用于輸出匹配結(jié)果,例如輸出匹配成功的匹配規(guī)則的標(biāo)識(shí)。
[0074] 搜索模塊602包括,狀態(tài)轉(zhuǎn)移模塊701和處理模塊702,如圖7所示。
[0075] 狀態(tài)轉(zhuǎn)移模塊701,用于應(yīng)用AC自動(dòng)機(jī),根據(jù)讀取的搜索對(duì)象的字符,按AC算法進(jìn)行狀態(tài)轉(zhuǎn)移。具體實(shí)施方式為,用一個(gè)整數(shù)S表示AC自動(dòng)機(jī)的當(dāng)前狀態(tài),初始時(shí)S為初始狀態(tài)0,每讀取一個(gè)搜索對(duì)象的字符,就在AC自動(dòng)機(jī)中查找,確定下一狀態(tài),并修改S值為該狀態(tài)。
[0076] 處理模塊702,用于在當(dāng)前狀態(tài)節(jié)點(diǎn)為終態(tài)節(jié)點(diǎn)時(shí),查找所述節(jié)點(diǎn)規(guī)則表以獲得當(dāng)前終態(tài)節(jié)點(diǎn)匹配的子規(guī)則標(biāo)識(shí),按所述子規(guī)則標(biāo)識(shí)查找所述匹配狀態(tài)表,獲得所述子規(guī)則所屬匹配規(guī)則的子規(guī)則總數(shù)和最近匹配的子規(guī)則順序號(hào),比較所述子規(guī)則順序號(hào)和所述最近匹配的子規(guī)則順序號(hào),如果所述子規(guī)則順序號(hào)比所述最近匹配的子規(guī)則順序號(hào)大于1,則根據(jù)所述子規(guī)則順序號(hào)和所述子規(guī)則總數(shù)判斷所述子規(guī)則是否是最后一個(gè)子規(guī)則,如果是,則所述搜索對(duì)象同所述匹配規(guī)則匹配,如果不是,則更新匹配狀態(tài)表中所述最近匹配子規(guī)則順序號(hào)為所述子規(guī)則的順序號(hào)。
[0077] 具體實(shí)施方式如下。
[0078] 在當(dāng)前終態(tài)節(jié)點(diǎn)的鏈表中逐一查找每個(gè)子規(guī)則,對(duì)于每個(gè)子規(guī)則,根據(jù)其標(biāo)識(shí)確定其所屬的匹配規(guī)則,在匹配狀態(tài)表中查找該匹配規(guī)則的子規(guī)則總數(shù)和最近匹配的子規(guī)則;
[0079] 判斷鏈表中查找的子規(guī)則的順序號(hào)是否比匹配狀態(tài)表中最近匹配子規(guī)則的順序號(hào)大1,如果是,則根據(jù)子規(guī)則總數(shù)判斷該子規(guī)則是否是最后一個(gè)子規(guī)則,如果是最后一個(gè)子規(guī)則,則搜索對(duì)象匹配該子規(guī)則所屬的匹配規(guī)則,輸出該匹配規(guī)則;如果不是最后一個(gè)子規(guī)則,并且鏈表中查找的子規(guī)則的順序號(hào)比匹配狀態(tài)表中最近匹配子規(guī)則的順序號(hào)大1,則更新匹配狀態(tài)表中記錄的最近匹配子規(guī)則為該子規(guī)則的順序號(hào)。
[0080] 將該終態(tài)節(jié)點(diǎn)對(duì)應(yīng)的所有子規(guī)則按上述方法處理完后,讀取下一個(gè)字符,按AC算法搜索。
[0081] 本發(fā)明的方法的具體實(shí)施例如圖8所示。
[0082] 步驟S801,讀取規(guī)則集。
[0083] 步驟S802,標(biāo)識(shí)所述規(guī)則集的匹配規(guī)則,判斷規(guī)則集的匹配規(guī)則中是否包含通配符,如果包含,在通配符處將匹配規(guī)則劃分為不包含通配符的子規(guī)則,如果不包含,則所述匹配規(guī)則作為其自身的子規(guī)則,然后將所有子規(guī)則按AC算法生成AC自動(dòng)機(jī),并生成節(jié)點(diǎn)規(guī)則表和匹配狀態(tài)表。
[0084] 節(jié)點(diǎn)規(guī)則表,記錄在所述AC自動(dòng)機(jī)中的終態(tài)節(jié)點(diǎn)處匹配的所有子規(guī)則,子規(guī)則用其所屬匹配規(guī)則的標(biāo)識(shí)和該子規(guī)則在匹配規(guī)則中的順序號(hào)標(biāo)識(shí)。
[0085] 匹配狀態(tài)表中的每一行對(duì)應(yīng)于一個(gè)匹配規(guī)則,記錄該匹配規(guī)則的最近匹配的子規(guī)則的順序號(hào)和子規(guī)則總數(shù),每個(gè)匹配規(guī)則的最近匹配的子規(guī)則的順序號(hào)初始化為0。
[0086] 步驟S803,讀取搜索對(duì)象。
[0087] 步驟S804,按AC算法轉(zhuǎn)移狀態(tài)。
[0088] 步驟S805,判斷狀態(tài)節(jié)點(diǎn)是否為終態(tài)節(jié)點(diǎn),如果是,執(zhí)行步驟S806,否則,執(zhí)行步驟S803。
[0089] 步驟S806,查找節(jié)點(diǎn)規(guī)則表,獲得該終態(tài)節(jié)點(diǎn)匹配的子規(guī)則的標(biāo)識(shí)。
[0090] 步驟S807,按子規(guī)則標(biāo)識(shí)中的所屬匹配規(guī)則的標(biāo)識(shí)查找匹配狀態(tài)表,判斷該子規(guī)則的順序號(hào)是否比所屬匹配規(guī)則對(duì)應(yīng)的最近匹配的子規(guī)則的順序號(hào)大1,如果是,執(zhí)行步驟S808,否則執(zhí)行步驟S810。
[0091] 步驟S808,同所屬匹配規(guī)則的子規(guī)則總數(shù)比較,判斷該子規(guī)則是否是最后一個(gè)子規(guī)則,如果是,輸出匹配結(jié)果,執(zhí)行步驟S810,否則,執(zhí)行步驟S809。
[0092] 步驟S809,更新匹配狀態(tài)表中匹配規(guī)則對(duì)應(yīng)的最近匹配的子規(guī)則的順序號(hào)為該子規(guī)則的順序號(hào)。
[0093] 步驟S810,判斷該終態(tài)節(jié)點(diǎn)處是否還有匹配的子規(guī)則,如果有,執(zhí)行步驟S806,否則,執(zhí)行步驟S803。
[0094] 執(zhí)行上述流程,直到搜索對(duì)象被讀取完為止。
高效檢索全球?qū)@?/div>

專利匯是專利免費(fèi)檢索,專利查詢,專利分析-國(guó)家發(fā)明專利查詢檢索分析平臺(tái),是提供專利分析,專利查詢,專利檢索等數(shù)據(jù)服務(wù)功能的知識(shí)產(chǎn)權(quán)數(shù)據(jù)服務(wù)商。

我們的產(chǎn)品包含105個(gè)國(guó)家的1.26億組數(shù)據(jù),免費(fèi)查、免費(fèi)專利分析。

申請(qǐng)?jiān)囉?/a>

QQ群二維碼
意見(jiàn)反饋