Tableau 中的正则表达式 returns 计算字段中只有空值
Regular Expresion in Tableau returns only Null's in Calculated Field
我正在尝试在 Tableau 中提取第一次出现的词性名称(例如 subst、adj、fin) 位于 {
和 :
之间,每一行来自以下列:
{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+):.*\}$')
我正在尝试在 Tableau 中提取第一次出现的词性名称(例如 subst、adj、fin) 位于 {
和 :
之间,每一行来自以下列:
{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+):.*\}$')