IsRegEx - 指令碼與圖表函數
IsRegEx() 會傳回指定文字是否為有效的規則運算式。
此函數執行區分大小寫的 Regex 操作。您也可以使用變體 IsRegExI() 來執行不區分大小寫的 Regex 操作。
語法:
IsRegEx
(expr [, debug])
傳回的資料類型: 雙值
引數
expr
|
包含要計算的規則運算式的字串運算式。 |
debug
|
選用引數。如果為此引數指定了任何值,則運算式將傳回文字提示,概述如何修正無效的規則運算式。 |
函數範例
IsRegEx('[a-z]')
|
傳回 -1 (true)。 |
IsRegEx(']0-1[', 1)
|
此範例傳回錯誤訊息,其中包含修正無效規則運算式 ]0-1[ 的提示。 |
IsRegEx('[a-z')
|
傳回 0 (false)。由於未指定 debug 引數,因此不會顯示錯誤訊息。 |
使用情境
您可以使用 IsRegEx() 來測試您所寫的規則運算式在 Qlik Sense 中是否有效。例如,您可以將一個表格載入到您的應用程式中,其中包含輸入文字以及作為 Regex 的文字有效性評估。
範例 1 – 將 Regex 的有效性載入到資料模型中
概述
開啟資料載入編輯器並將下面的載入指令碼新增至新的索引標籤。
載入指令碼包含:
載入指令碼
[Expression Validity]:
Load
*,
IsRegEx(reg_exp) as validity_no_hint,
IsRegEx(reg_exp,1) as validity_with_hint
;
Load
*
Inline
`
reg_exp
[a-z]+
([a-z)(0-9)+
abcdefg|[0-7
\$|¢(0-9)
`;
結果
載入資料並開啟工作表。建立新的表格並將這些欄位新增為維度:
-
reg_exp
-
validity_no_hint
-
validity_with_hint
結果表格
([a-z)(0-9)+ |
0 |
-1 |
[a-z]+
|
-1
|
提示文字 (自動產生) |
\$|¢(0-9)
|
-1
|
提示文字 (自動產生) |
abcdefg|[0-7 |
0 |
-1 |
範例 2 – 僅將有效的 Regex 載入到資料模型中
概述
開啟資料載入編輯器並將下面的載入指令碼新增至新的索引標籤。
載入指令碼包含:
載入指令碼
[Regular Expressions]:
Load
*
Inline
`
reg_exp
[a-z]+
([a-z)(0-9)+
abcdefg|[0-7
\$|¢(0-9)
`
WHERE
IsRegEx(reg_exp)=True()
;
結果
載入資料並開啟工作表。建立新的表格並將此欄位新增為維度:
[a-z]+ 和 \$|¢(0-9) 是有效的規則運算式,因此它們已載入到資料模型中。([a-z)(0-9)+ 和 abcdefg|[0-7 不是有效的規則運算式,因此不會載入到資料模型中。
範例 3 - 圖表運算式
概述
在此範例中,我們將一組輸入字串載入到資料模型中,並將這些字串其以及評估 Regex 有效性的兩個計算維度新增至表格。兩個計算維度以不同的方式傳達相同的資訊。
開啟 資料載入編輯器 並將下列載入指令碼新增至新區段。
載入指令碼包含一個欄位 reg_exp,其中包含的輸入字串可能是也可能不是有效的規則運算式。此欄位包含在名為 Regular Expressions 的表格中。
載入指令碼
[Regular Expressions]:
Load
*
Inline
`
reg_exp
[a-z]+
([a-z)(0-9)+
abcdefg|[0-7
\$|¢(0-9)
`;
結果
請執行下列動作:
-
載入資料並開啟工作表。建立新的表格。新增 reg_exp 作為維度。
-
接下來,新增下列計算維度:
=IsRegEx(reg_exp)
這是一個基本圖表運算式,如果輸入是有效的規則運算式,則顯示 -1 (true),如果不是有效的規則運算式,則顯示 0 (false)。
-
新增另一個計算維度:
=if(IsRegEx(reg_exp), 'Valid regex', 'Invalid regex')
這是一個條件運算式,可提供有關輸入有效性的更多詳細資訊。
結果表格
([a-z)(0-9)+ |
0 |
Invalid regex |
[a-z]+ | -1 | Valid regex |
\$|¢(0-9) | -1 | Valid regex |
abcdefg|[0-7 | 0 | Invalid regex |