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 - 图表表达式
概述
在这个示例中,我们将一组输入字符串加载到数据模型集,并将它们添加到一个数据表中,同时还有两个计算维度,用于评估正则表达式的有效性。两个计算维度以不同的方式传递相同的信息。
打开 数据加载编辑器,并将以下加载脚本添加到新部分。
加载脚本包含一个字段,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 |