Tableau 中的正则表达式 returns 计算字段中只有空值

Regular Expresion in Tableau returns only Null's in Calculated Field

我正在尝试在 Tableau 中提取第一次出现的词性名称(例如 substadjfin) 位于 {: 之间,每一行来自以下列:

{subst:pl:nom:m3=18, subst:pl:voc:m3=1, subst:pl:acc:m3=5}
{subst:sg:gen:m3=5, subst:sg:inst:m3=1, subst:sg:gen:f=1, subst:sg:nom:m3=1}
{subst:sg:nom:f=3, subst:sg:loc:f=2, subst:sg:inst:f=1, subst:sg:nom:m3=1}
{adj:sg:nom:m3:pos=2, adj:sg:acc:m3:pos=1, adj:sg:acc:n1.n2:pos=3, adj:pl:acc:m1.p1:pos=3, adj:sg:nom:f:pos=1}
{adj:sg:gen:f:pos=2, adj:sg:nom:n:pos=1}
{fin:sg:ter:imperf=5}

为此,我使用以下正则表达式:{(\w+):(?:.*?)}$。不幸的是我的计算字段 returns 只有 Null 的:

Screeen from Tableau

我在正则表达式测试器上检查了我的正则表达式并且有效:

Sreen from regex101.com

我不知道我做错了什么,所以如果有人有任何建议,我会很高兴。

Tableau正则表达式引擎是ICU,它和PCRE有一些区别。

其中之一是必须转义应作为文字符号匹配的大括号。

您的正则表达式还包含一个冗余 non-capturing 组 ((?:.*?) = .*?) 和一个惰性量词,它会减慢匹配速度,因为您要检查 }在字符串的末尾,因此应该更改为贪婪的 .*.

您可以使用

REGEXP_EXTRACT([col], '^\{(\w+):.*\}$')