通過觀察可以得到乙個規律,需要匹配的字段(上圖中的「渠道」,「省份」,「運營商」)要麼是乙個確定的數,要麼是all(表示所有)。那麼我們把上圖轉換成下面的這張:(這個圖和上面的圖不是一一對應哦。)
其實就是把上面的固定值替換成1,all替換成0。3個匹配字段,2個不同的值,根據數學的排列組合,總共的模式有2的3次方=8種:
這些組合還有一些順序,比如最後匹配的是最模糊的(0,0,0),最上面的是最精確的(1,1,1),這個順序可以根據業務需求來。
好,預設已經設計好了,下面來看我們怎麼在程式中使用。
為了更加形象我還是舉前面的例子:
1、首先配置需要匹配的資料:
載入到記憶體的map中,存放的格式(資料之間用下劃線「_」隔開)如下:
2、假設現在有乙個客戶端請求過來,對應的資料,渠道:qd2;省份;zj;運營商是:yd。然後根據上面的8種模式以及順序,在記憶體中組合(具體的組合方法有很多中,比如:把模式定義成二維陣列通過迴圈把對應的資料填進去,遇到0則跳過,1則新增對應的資料)成下面的形式把(放到list裡面):
3、通過list迴圈匹配第1步中的map,就能快速找打了,像例子中的第一條就匹配上了獲得了值100,匹配上了之後立馬跳出迴圈。
總結,這種模式可以擴充套件多個字段,欄位越多模式就越多,每種模式的順序需要根據具體的業務需求來確定。
近似模式匹配 查詢匹配問題
一 搜尋乙個模式在文字中的所有近似出現 輸入 模式p p1p2.pn,文字t t1t2.tm以及引數 它是最大錯配數 輸出 所有位置1 i m n 1,使得titi 1.ti n 1與p1p2.pn至多有k個錯配 即 dh ti,p k 二 查詢匹配問題 找到所有與文字近似匹配的查詢的子字串 輸入 ...
近似模式匹配 查詢匹配問題
一 搜尋乙個模式在文字中的所有近似出現 輸入 模式p p1p2.pn,文字t t1t2.tm以及引數 它是最大錯配數 輸出 所有位置1 i m n 1,使得titi 1.ti n 1與p1p2.pn至多有k個錯配 即 dh ti,p k 二 查詢匹配問題 找到所有與文字近似匹配的查詢的子字串 輸入 ...
快速模式匹配演算法(KMP)
恐怕現在用過電腦的人,一定都知道大部分帶文字編輯功能的軟體都有乙個快捷鍵ctrl f 吧 比如word 這個功能主要來完成 查詢 替換 和 全部替換 功能的,其實這就是典型的模式匹配的應用,即在文字檔案中查詢串。1.模式匹配 模式匹配的模型大概是這樣的 給定兩個字串變數s和p,其中s成為目標串,其中...