2017-04-25 22 views
0

我的測試看起來如下:我有幾個文本片段,由'>'引入單行標題。目前還不清楚哪種文本出現在標題中,只是它只是一行。 標題之後的文本片段的長度可能會有所不同。也可能在文本部分1和2之間顯示空行(見下文)。此外,文字段的數量也是可變的。如何使用postgresql將包含多個標題和後續文本的文本分成兩列?

>Sequenz 1 Test 1234 
MTEITAAMVKELRESTGAGMMDCKNALSETNGDFDKAVQLLREKGLGKAAKKADRLAAEG 
LVSVKVSDDFTIAAMRPSYLSYEDLDMTFVENEYKALVAELEKENEERRRLKDPNKPEHK 
IPQFASRKQLSDAILKEAEEKIKEELKAQGKPEKIWDNIIPGKMNSFIADNSQLDSKLTL 
MGQFYVMDDKKTVEQVIAEKEKEFGGKIKIVEFICFEVGEGEVAAQL 

>Sequenz 2 | Test: 1234 
SATVSEINSETDFVAKNDQFIALTKDTTAHIQSNSLQSVEELHSSTINGVKFEEYLKSQI 
ATIGENLVVRRFATLKAGANGVVNGYIHTNGRVGVVIAAACDSAEVASKSRDLLRQICMH 
LVSVKVSDDFTIAAMRPSYLSYEDLDMTFVENEYKALVAELEKENEERRRLKDPNKPEHK 
IPQFASRKQLSDAILKEAEEKIKEELKAQGKPEKIWDNIIPGKMNSFIADNSQLDSKLTL 
MGQFYVMDDKKTVEQVIAEKEKEFGGKIKIVEFICFEVGEGEVAAQL 
>Sequenz 3 : Test : 1234 
MTEITAAMVKELRESTGAGMMDCKNALSETNGDFDKAVQLLREKGLGKAAKKADRLAAEG 
LVSVKVSDDFTIAAMRPSYLSYEDLDMTFVENEYKALVAELEKENEERRRLKDPNKPEHK 
IPQFASRKQLSDAILKEAEEKIKEELKAQGKPEKIWDNIIPGKMNSFIADNSQLDSKLTL 
MGQFYVMDDKKTVEQVIAEKEKEFGGKIKIVEFICFEVGEGEVAAQL 

我想分成兩列。一個沒有領先'>'的標題。第二列應包含相應的文本部分。

|Header       |Text 
|--------------------------------|----------------------------------------------------------- 
|Sequenz 1 Test 1234    |MTEITAAMVKELRESTGAGMMDCKNALSETNGDFDKAVQLLREKGLGKAAKKADRLAAEG 
|        |LVSVKVSDDFTIAAMRPSYLSYEDLDMTFVENEYKALVAELEKENEERRRLKDPNKPEHK 
|        |IPQFASRKQLSDAILKEAEEKIKEELKAQGKPEKIWDNIIPGKMNSFIADNSQLDSKLTL 
|        |MGQFYVMDDKKTVEQVIAEKEKEFGGKIKIVEFICFEVGEGEVAAQL 
|--------------------------------|----------------------------------------------------------- 
|Sequenz 2 | Test: 1234   |SATVSEINSETDFVAKNDQFIALTKDTTAHIQSNSLQSVEELHSSTINGVKFEEYLKSQI 
|        |ATIGENLVVRRFATLKAGANGVVNGYIHTNGRVGVVIAAACDSAEVASKSRDLLRQICMH 
|        |LVSVKVSDDFTIAAMRPSYLSYEDLDMTFVENEYKALVAELEKENEERRRLKDPNKPEHK 
|        |IPQFASRKQLSDAILKEAEEKIKEELKAQGKPEKIWDNIIPGKMNSFIADNSQLDSKLTL 
|        |MGQFYVMDDKKTVEQVIAEKEKEFGGKIKIVEFICFEVGEGEVAAQL 
|--------------------------------|----------------------------------------------------------- 
|Sequenz 3 : Test : 1234  |MTEITAAMVKELRESTGAGMMDCKNALSETNGDFDKAVQLLREKGLGKAAKKADRLAAEG 
|        |LVSVKVSDDFTIAAMRPSYLSYEDLDMTFVENEYKALVAELEKENEERRRLKDPNKPEHK 
|        |IPQFASRKQLSDAILKEAEEKIKEELKAQGKPEKIWDNIIPGKMNSFIADNSQLDSKLTL 
|        |MGQFYVMDDKKTVEQVIAEKEKEFGGKIKIVEFICFEVGEGEVAAQL 
|--------------------------------|----------------------------------------------------------- 

我已經有一個select語句來提取標題。

SELECT split_part(regexp_split_to_table(trim(leading '>' 
FROM 'text from above'), E'>'),E'\n', 1) 

但我真的沒有線索如何將文本之後的文本拆分爲第二列。我感謝幫助!提前致謝。

回答

0

這將捕獲組1中的標題和組2中的文本。

>(.*)([\s\S]*?)(?=\R>|$) 

它捕獲>之後的所有內容,直到換行。然後它捕捉到換行符後面的所有內容,然後是>,字符串末尾。

See it here at regex101

+0

感謝您的快速回復。我能從regex101看到它看起來很有前途。由於我想實現兩個獨立的數據庫列,我想知道如何解開這個正則表達式來將它用於兩個語句。 –

相關問題