深入了解Data Workbench 終止公告.
規則運算式用於所有Data Workbench搜尋欄位,包括查詢實體面板。
規則運算式是一種文字模式,由英數字元和稱為超字元的特殊字元組成,可定位模式並從文字中擷取子字串。 規則表達式在電腦寫程式中廣泛使用,是Perl等語言的一個組成部分。
為了識別和擷取複雜的字串模式,Data Workbench伺服器會在某些轉換和條件中使用規則運算式。 以下是規則運算式的簡短指南。
本附錄並非規則運算式的完整簡介。 尤其值得參考的是O'Reilly出版物 控制規則運算式,第2版 傑弗里F弗里德爾著。
詞語 | 定義 |
---|---|
常值 | 常值是我們在規則運算式中用來尋找特定字元順序的字元。 例如,若要在 shop/products.html,字串產品是常值,或字串中我們實際尋找的。 |
超字元 | 超字元是特殊字元,在規則運算式的上下文中具有唯一的解釋。 例如,句點(.) 是用於匹配任何字元的超字元。 |
逸出序列 | 逸出序列只是告訴規則運算式引擎,我們想將其中一個超字元當成文字使用的一種方式。 逸出序列一律以反斜線字元(\ )。 將反斜線(也是元字元)放在元字元前面,規則運算式引擎將逸出的元字元解譯為常值。 例如,如果您想要比對超字元句號(. ),您需要使用逸出序列。 不過,若要比對字串168.196.0.11中的其中一個句號,您可以使用由反斜線和句號(\. )。 |
圖樣 | 這是規則運算式的簡稱。 從本質上說,規則運算式是您嘗試比對目標字串的模式。 |
目標字串 | 此詞指的是我們在中搜尋以找出所需模式的字串。 |
常值比對會取用不含任何逸出字元的常值字串,並查看目標字串,以查看它是否為目標字串的子字串。
在此範例中,您可了解常值比對的運作方式。 請考量從網站流量收集資料,且cs(referrer)欄位包含下列值的情況:
https://www.abc.com/adventurenews/today.html?ad=123AZ45
若要判斷反向連結是否代表點按其中一個廣告的使用者,您必須查看反向連結是否包含字串廣告。 您只需使用常值字串廣告來搜尋目標字串,並判斷是否使用廣告將流量路由至網站即可。 雖然這會符合目標字串,但會在兩個位置相符,因此不明確,可能導致誤判。
下列URL包含兩個不同位置的字串廣告:
https://www.abc.com/ad vertnews/today.html?ad =123AZ45
因此,如果您嘗試判斷哪些工作階段是因特定廣告促銷活動而開始,單純使用文字廣告作為規則運算式顯然是不夠的。 將常值變更為"ad="會消除此模糊性,並導致運算式只產生單一比對。 不過,即使這可能也不足以確保反向連結是廣告促銷活動的一部分。 請考量下列反向連結:
https://www.xyz.com/hello.html?pad=something
您無法控制其他人用來建立網站連結的URL。 文字比對的機制太簡單,無法定位因廣告促銷活動而開始的工作階段。 以下章節探討如何使用超字元來進行更有彈性且功能強大的比對。
超字元是程式或資料欄位中的特殊字元,提供其他字元的相關資訊。
元字元 | 說明 |
---|---|
. (圓點) | 比對單一字元,例如: re:x.z 匹配"xyz"或"xxz"。 |
*(星號) | 匹配一個或多個字元,例如: re:Z* 匹配"ZZZ"。 |
? (萬用字元) | 匹配以前表達式的0或1以強制最小匹配,例如: xy?z 匹配"xy"和"xyz"。 |
其他常用規則運算式也可用來建立更複雜的搜尋字串。
清單、範圍和OR
常值比對可讓您尋找單一字串,但方括弧、破折號和垂直號可讓您定義目標字串中要尋找的項目清單。
對於這個超字元…… | 規則運算式處理器將…… |
---|---|
方括弧([ ]) | 將括弧內的任何字元與單個字元位置匹配。 例如,[AB]是指令,用來比對字母A或字母B,而[0123456789]表示符合0到9範圍內的任何字元。 |
破折號(-) | 匹配字元範圍。 因此,我們不必寫[0123456789],而只能寫[0-9]。 這可擴充至一組方括弧內的字元範圍和多個範圍。 例如,[0-9A-C]匹配字元0到9以及A到C。
注意:若要測試破折號(-),將其作為方括弧內的文字,必須排在第一或最後。 例如,針對 — 和0到9的[-0-9]測試。 |
直立線符號 (|) | 將兩個選項之一與指定的目標字串匹配。 例如, b|nat會比對bat或nat。 |
考量下列範例:
圖樣 | 字串 | 符合 |
---|---|---|
Win9[58] |
OS=Win95 | Win95 |
Win95 | 8 | OS=Win98 |
[0-9] |
Mozilla/3.0 | 3 |
課程[A-Z] |
課程a | 無相符項目,因為小寫a不在大寫A到Z的範圍內。 |
否定
否定是表示您想要比對任何指定字元以外的項目的方式。 否定超字元、抑揚符號或脫字元號(^
),會作為方括弧內的第一個字元,表示您想要將相符項目設為任何字元,但方括弧中的其餘字元除外。 例如,若要比對除分號(;
),你會寫
[^;
]
這會比對除分號以外的任何字元。
定位
若要強制比對目標字串的開頭或結尾,會使用兩個超字元之一。
對於這個超字元…… | 規則運算式處理器將…… |
---|---|
抑揚符號或脫字元號(^ ) |
比對字串的開頭。 例如,^[Tt] 他會比對目標字串「The Beingn」,但不會比對「This is the starting」。 |
貨幣符號 ($ ) |
比對字串的結尾。 例如, [Ee] nd$會比對「這是結束」,但不會比對「結束是特殊時間」。 |
如果規則運算式開頭包含^,結尾包含$,則整個目標字串必須符合規則運算式。
匹配任何內容
期間(.) 是特殊的超字元,會比對目標字串中的任何字元。 例如,規則運算式 ^…$
匹配任何三個字元長度的目標字串。 規則運算式「……」會匹配任何至少包含三個字元的目標字串。
重複模式
迭代超字元可讓您多次匹配模式。
對於這個超字元…… | 規則運算式處理器將…… |
---|---|
問號(?) | 不匹配元字元(?)前面緊鄰的字元的實例或實例。 例如,模式rea?d會比對紅色和讀取。 |
星號 (*) | 匹配超字元(*)前面的零個或多個字元。 例如,模式[0-9]*匹配任意數字0到9(任意整數)。 |
Plus (+) | 匹配前面字元或範圍的一個或多個出現次數。 例如,模式thre+會比對三個,但不符合。 |
{n} | 匹配正在處理的字元或範圍n次。 以下模式與美國電話號碼相符: 雖然不是最佳模式,但會判斷目標字串是否為正確格式。 |
{n,m} | 至少匹配n次,最多匹配m次。 例如,fo{1,2}d將匹配fod和food,但不匹配food。 |
模式比對只是規則運算式的一部分。 規則運算式也提供用於擷取目標字串關鍵部分的機制。 這需使用左括弧和右括弧來完成。 這些提取通常用作輸入到另一個進程,並通過使用 %position%,其中position是整數,反向連結至相符括弧集的計數。
請考量下列模式擷取範例:
圖樣 | 字串 | 符合 | 提取 |
---|---|---|---|
Win(9[58]) | OS=Win95 | Win95 | %1% = 95 |
(Win)(95|8) | OS=Win98 | Win98 | %1% =贏 %2% = 98 |
Mozilla/([0-9])。([0-9]) | Mozilla/3.0 | Mozilla/3.03 | %1% = 3 %2% = 0 |
課程([A-Z]) | 課程a | 不匹配,因為小寫a不在大寫A到Z的範圍內 |