2017-08-08 124 views
0

輸入文件:匹配連字符/破折號旁邊某些字母

>AMSF107-09|Perciformes|COI-5P|GU661092 
TAGTA- 
>AMSF114-09|Perciformes|COI-5P|GU661101 
C-ACGC 
>ANGBF3683-12|Haemulon_sp._B_JJT-2012|COI-5P|JQ741244 
-GCAGTT-CA- 

我想替換連字符TAGTA-C-ACGC,並-GCAGTT-CA-N的,但離開頭(與>開始的行) 完整。我正在尋找一個匹配A,C,GT旁邊的連字符的正則表達式,但排除以>字符開頭的匹配項。

所需的輸出

>AMSF107-09|Perciformes|COI-5P|GU661092 
TAGTAN 
>AMSF114-09|Perciformes|COI-5P|GU661101 
CNACGC 
>ANGBF3683-12|Haemulon_sp._B_JJT-2012|COI-5P|JQ741244 
NGCAGTTNCAN 

編輯: 我知道正則表達式中最基礎的。到目前爲止,我已經嘗試(ACGT)?\-(ACGT)?,但匹配每個連字符。

+0

對,你到目前爲止嘗試過什麼? – Utkanos

+0

我只知道關閉正則表達式 – cooldood3490

回答

1

這由ACGT之前連字符相匹配:(?<=[ACGT])-

+0

的基本知識,但它也與第3個標題中的T匹配。 '> ANGBF3683-12 | Haemulon_sp._B_JJT-2012 | COI-5P | JQ741244' – cooldood3490

+0

你在寫什麼語言?您可以添加一個簡單的方法來過濾行 – gribvirus74

+0

我正在使用查找和替換功能編輯Sublime中的文本文件。我在查找部分放置正則表達式,在替換部分放置'N'。 – cooldood3490

1

所以這並不完全找到剛纔的連字符,但它會找到任何組合ACGT包括- 。這裏是regex

(?=[ACGT-]+$)(?=(?:[^-]*[-])+).* 

您可能需要split這場比賽string斷並將其保存到一個臨時變量,你那麼做了.replace('-', 'N');並連接回到您的數據字符串的結尾。希望這可以幫助!

+0

等等,這不太對。我以爲我測試過它,但它仍然有一個錯誤。我會看看我是否可以修復它,但它接近!問題是,只要你的任何給定字符已經存在於字符串中,你就可以放入任何字符或數字。我會繼續努力工作。 –

+0

@ cooldood3490不小心粘貼了錯誤的'regex',它現在被更新了。 –

+0

我感謝您的幫助 – cooldood3490

相關問題