專利名稱:一種模式匹配方法
技術(shù)領(lǐng)域:
本發(fā)明涉及串匹配技術(shù),特別是涉及一種模式匹配方法。
背景技術(shù):
KMP匹配方法是串匹配中效率最高的方法,它充分利用模式信息,使得模式在 跟主串匹配過程中主串的指針不回溯,從而具有較高的匹配速度,并在各種領(lǐng)域中有廣 泛應(yīng)用。然而,KMP方法仍存在著主串與模式多個(gè)相同字符重復(fù)比較的缺陷。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題就是為了克服上述現(xiàn)有技術(shù)存在的缺陷而提供一種 模式匹配方法。本發(fā)明的目的可以通過以下技術(shù)方案來實(shí)現(xiàn)一種模式匹配方法,其特征在 于,包括對(duì)匹配文本A設(shè)兩個(gè)指針,模式B和模式B’分別設(shè)一個(gè)指針,匹配文本A首 端和模式B首端對(duì)齊,文本A末端和模式B’末端對(duì)齊;模式B指針起始位置為模式B 的首端,模式B’指針起始位置為模式B’的末端,匹配文本A兩指針起始位置為文本 首端和文本的末端;匹配過程中,模式B、模式B’分別和文本交替向中間匹配,當(dāng)匹配 過程中出現(xiàn)失配時(shí),根據(jù)模式B、B’已經(jīng)得到的部分匹配結(jié)果的將模式B、B’交替向 中間滑動(dòng)后繼續(xù)比較。該方法對(duì)模式B、B’已經(jīng)得到的部分匹配結(jié)果進(jìn)行Q (r)值計(jì)算,以使模式B、 B’交替向中間滑動(dòng)。所述的Q (r)值計(jì)算在下式條件時(shí)包括以下步驟al)i,= B(O), y =0,Q(B(O))=O;bl)若i’ =1,則執(zhí)行步驟dl;否則,執(zhí)行步驟Cl;Cl)若 j,=B(O)或 B(i,)=B(j,),則 i,=i,-1,j,=j,—1,Q(i,) =j’,執(zhí)行步驟bl;否則,j’ =Q(j’),執(zhí)行步驟cl;d)結(jié)束。所述的Q (r)值計(jì)算在下式條件時(shí)包括以下步驟a2)i = 1,j = 0,Q(I) = 0 ;b2)若i = m,則執(zhí)行步驟d2 ;否則,執(zhí)行步驟C2 ;
C2)若 j = 0 或(B(i) = B(j)),貝丨Jj =j+l,i = i+1,QCO = j,執(zhí)行步驟 b2 ; 否則,j = Q(j),執(zhí)行步驟c2;d2)結(jié)束。與現(xiàn)有技術(shù)相比,本發(fā)明避免了字符的重復(fù)匹配,減少了比較次數(shù),提高了匹 配效率。
具體實(shí)施例方式下面對(duì)本發(fā)明作進(jìn)一步說明。一種模式匹配方法,包括對(duì)匹配文本A設(shè)兩個(gè)指針,模式B和模式B’分別設(shè)一個(gè)指針,匹配文本A首 端和模式B首端對(duì)齊,文本A末端和模式B’末端對(duì)齊;模式B指針起始位置為模式B 的首端,模式B’指針起始位置為模式B’的末端,匹配文本A兩指針起始位置為文本 首端和文本的末端;匹配過程中,模式B、模式B’分別和文本交替向中間匹配,當(dāng)匹配 過程中出現(xiàn)失配時(shí),根據(jù)模式B、B’已經(jīng)得到的部分匹配結(jié)果的將模式B、B’交替向 中間滑動(dòng)后繼續(xù)比較。該方法對(duì)模式B、B’已經(jīng)得到的部分匹配結(jié)果進(jìn)行Q (r)值計(jì)算,以使模式B、 B’交替向中間滑動(dòng)。所述的Q (r)值計(jì)算在下式條件時(shí)
權(quán)利要求
1.一種模式匹配方法,其特征在于,包括對(duì)匹配文本A設(shè)兩個(gè)指針,模式B和模式B’分別設(shè)一個(gè)指針,匹配文本A首端和 模式B首端對(duì)齊,文本A末端和模式B’末端對(duì)齊;模式B指針起始位置為模式B的首 端,模式B’指針起始位置為模式B’的末端,匹配文本A兩指針起始位置為文本首端 和文本的末端;匹配過程中,模式B、模式B’分別和文本交替向中間匹配,當(dāng)匹配過程 中出現(xiàn)失配時(shí),根據(jù)模式B、B,已經(jīng)得到的部分匹配結(jié)果的將模式B、B,交替向中間 滑動(dòng)后繼續(xù)比較。
2.根據(jù)權(quán)利要求1所述的一種模式匹配方法,其特征在于,該方法對(duì)模式B、B’已 經(jīng)得到的部分匹配結(jié)果進(jìn)行Q(r)值計(jì)算,以使模式B、B’交替向中間滑動(dòng)。
3.根據(jù)權(quán)利要求2所述的一種模式匹配方法,其特征在于,所述的Q(r)值計(jì)算在下 式條件時(shí)包括以下步驟al)i,= B (0), j,=0,Q(B(O))=O;bl)若i’ =1,則執(zhí)行步驟dl;否則,執(zhí)行步驟Cl;Cl)若 j,=B(O)或 B(i,)=B(j,),則 i,=i,-1,j,=j,-1,Q(i,)= j’,執(zhí)行步驟bl;否則,j’ =Q(j’),執(zhí)行步驟cl;d)結(jié)束。
4.根據(jù)權(quán)利要求2所述的一種模式匹配方法,其特征在于,所述的Qω值計(jì)算在下 式條件時(shí) 包括以下步驟a2)i = 1,j = 0,Q(I) = 0 ;b2)若i = m,則執(zhí)行步驟d2;否則,執(zhí)行步驟c2;C2)若j = 0或(B(i) = B(j)),貝丨Jj=j+1,i = i+1, Q(i) =j,執(zhí)行步驟 b2;否 貝"J,j = Q(j),執(zhí)行步驟c2;d2)結(jié)束。
全文摘要
本發(fā)明涉及一種模式匹配方法,包括對(duì)匹配文本A設(shè)兩個(gè)指針,模式B和模式B’分別設(shè)一個(gè)指針,匹配文本A首端和模式B首端對(duì)齊,文本A末端和模式B’末端對(duì)齊;模式B指針起始位置為模式B的首端,模式B’指針起始位置為模式B’的末端,匹配文本A兩指針起始位置為文本首端和文本的末端;匹配過程中,模式B、模式B’分別和文本交替向中間匹配,當(dāng)匹配過程中出現(xiàn)失配時(shí),根據(jù)模式B、B’已經(jīng)得到的部分匹配結(jié)果的將模式B、B’交替向中間滑動(dòng)后繼續(xù)比較。與現(xiàn)有技術(shù)相比,本發(fā)明避免了字符的重復(fù)匹配,減少了比較次數(shù),提高了匹配效率。
文檔編號(hào)G06F17/30GK102024000SQ20091019546
公開日2011年4月20日 申請(qǐng)日期2009年9月10日 優(yōu)先權(quán)日2009年9月10日
發(fā)明者胡文心, 蔡建華, 鄭駿 申請(qǐng)人:華東師范大學(xué)