2017-08-08 45 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

相关问题