2017-02-13 93 views
1

我一直試圖在Tableau中使用REGEXP_EXTRACT函數但未成功(請參見下圖)。我有一個字符串列'FOB',我想提取前導大寫字母。有時候有以下大寫字母一個破折號,有時沒有,所以我用在創建領域「廣告客戶」的語法如下:在Tableau中使用REGEXP_EXTRACT提取字符串時獲取「null」

REGEXP_EXTRACT([FOB],'^[A-Z]*') 

然而,這將產生一個完整的「空」一欄。奇怪的是,即使我將模式從'^ [A-Z] *'更改爲'SDM',它仍然是一樣的。這似乎只是的Tableau未啓用正則表達式...

我沒有在網上here檢查我的正則表達式和它的工作...得到真糊塗,任何幫助將不勝感激。

enter image description here

+0

這些大寫字母總是第一個嗎? –

+0

@WiktorStribiżew是的 –

回答

3

由於需要以提取在第一個字符的每個[FOB]柱細胞,需要使用^錨和[A-Z]字符類,而且你需要用與圖案一捕獲組(即配對括號,(...))告訴的Tableau你需要提取這個模式的一部分:

REGEXP_EXTRACT([FOB],'^([A-Z])') 
        ^ ^

提取所有(一個或多個)領先的大寫字母,加上+

REGEXP_EXTRACT([FOB],'^([A-Z]+)') 
          ^

Mark Jackson's regex blog excerpt

整個圖案被包裹在括號告訴的Tableau返回哪一部分的格局。這是我在創建此帖子時使用的早期測試版本的更新。關於這個附加功能的好處是,Tableau允許您在字符串的大部分上進行模式匹配,但允許您返回模式的子集。

+1

太棒了!有效。謝謝@WiktorStribiżew! –