我一直在尝试使用Tableau中的REGEXP_EXTRACT函数而没有成功(参见下图)。我有一个字符串列'FOB',我想提取大写字母。有时大写字母后面有一个破折号,有时候没有,所以我在创建的字段'Advertiser'中使用了以下语法:
REGEXP_EXTRACT([FOB],'^[A-Z]*')
但是,这会产生一个满“null”的列。奇怪的是,即使我将模式从'^ [A-Z] *'更改为'SDM',它仍然是相同的。看来Tableau没有启用正则表达式...
我确实在网上检查了我的正则表达式here并且它确实有效......真的很困惑,任何帮助都会受到赞赏。
答案 0 :(得分:3)
由于您需要提取每个 [FOB] 列单元格中的第一个字符,因此需要使用[A-Z]
锚点和(...)
字符类但你需要用捕获组(即成对括号,REGEXP_EXTRACT([FOB],'^([A-Z])')
^ ^
)包装模式,告诉Tableau你需要提取这个模式部分:
+
要提取所有(一个或多个)首要大写字母,请添加REGEXP_EXTRACT([FOB],'^([A-Z]+)')
^
:
{{1}}
请参阅Mark Jackson's regex blog excerpt:
整个模式用括号括起来告诉Tableau返回模式的哪个部分。这是我在创建此帖子时使用的早期测试版的更新。这个添加的好处是Tableau允许您在字符串的更大部分上进行模式匹配,但允许您返回模式的子集。