匹配某些字母旁边的连字符/短划线

时间:2017-08-08 17:52:03

标签: regex text-processing

输入文件:

>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中的连字符,但保留标题(以{开头的行) {1}})完好无损。我正在寻找与>ACG旁边的连字符匹配的正则表达式,但排除以{{{}}开头的匹配项1}}角色。

期望的输出

T

编辑: 我知道正则表达式的基础知识。到目前为止,我已经尝试了>但是匹配每个连字符。

2 个答案:

答案 0 :(得分:1)

匹配前缀为ACGT的连字符:(?<=[ACGT])-

答案 1 :(得分:1)

所以这并不能完全找到连字符,但它会找到包含A CGT-的任意组合。这是regex

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

您可能必须split关闭此string的匹配项并将其保存到临时变量中,然后执行.replace('-', 'N');并将其重新连接到数据末尾串。希望这有帮助!