IsRegEx - スクリプトおよびチャート関数
IsRegEx() は、指定されたテキストが有効な正規表現であるかどうかを返します。
この関数は、大文字と小文字を区別する正規表現操作を実行します。代わりに、バリアント IsRegExI() を使用して、大文字と小文字を区別しない正規表現操作を実行することもできます。
構文:
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 で有効かどうかをテストできます。たとえば、入力テキストを含むテーブルをアプリにロードし、正規表現としてテキストの有効性を評価できます。
例 1 - 正規表現の有効性をデータ モデルにロードする
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
ロード スクリプト
[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 - 有効な正規表現のみをデータ モデルにロードする
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
ロード スクリプト
[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 - チャートの数式
概要
この例では、データモデルに入力文字列のセットをロードし、正規表現の有効性を評価する 2 つの計算軸とともにテーブルに追加します。2 つの計算軸は、同じ情報を異なる方法で伝えます。
データ ロード エディター を開き、次のロード スクリプトを新しいセクションに追加します。
ロード スクリプトには、有効な正規表現である場合も、そうでない場合もある入力文字列を含む項目 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 |