2014-12-13 36 views
0

我有名字的字符串|值對:帶有'|'的正則表達式子字符串在模式

'clientName|img_0196.jpg||mime|||size|3195562||serverFileName|uplo/ad/548a5b35003bf.img_0196.jpg' 

我試圖提取CLIENTNAME,即img_0196.jpg的價值,用:

clientName := substring(eml from '%clientName.#"[^|]+#"%' for '#'); 

我已經嘗試了很多模式(不同的'|'轉義),但它們都產生NULL或'clientName'。
非常感謝。

+0

相關:http://stackoverflow.com/questions/27459194/regexp-split-to-array-spliiting-on – 2014-12-13 19:01:17

+0

好奇地想知道:什麼是錯與服用陣列的第二個元素或表的第二行(使用'regexp_split_to_table()')。 – 2014-12-13 19:02:34

+0

沒有錯,但我想知道我在這裏做錯了什麼。 – LenB 2014-12-13 21:07:27

回答

0

從我閱讀的文檔中,你有什麼應該工作,但它也不適用於我(9.3)。

我已經與for版本的substring很多問題,我只是不與正則表達式引擎和怪異#"解析信任的%_整個混合。

不知道你是否知道,但你可以放棄for並獲得純粹的POSIX正則表達式,subtring將返回整個比賽或第一個捕獲paren,如果有的話。因此,爲了得到你想要的:

substring(eml from 'clientName\|([^|]*)') 
+0

奇怪的是,子字符串(''/'「[em] - '#'['A-z0-9] +#'[^ A-z0-9] [^ /] +'工作得到'/'後面的十六進制代碼。也許它只是不喜歡'|'作爲一個角色。 – LenB 2014-12-13 21:09:27

+0

對,不改變我的答案。 「有時候工作」只是另一種說某些東西壞了的方式:) – smathy 2014-12-13 23:37:01

相關問題