匹配特定字母旁边的 hyphen/dash

Match hyphen/dash next to a Certain Letters

输入文件:

>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-

我想用 N 替换 TAGTA-C-ACGC-GCAGTT-CA- 中的连字符,但保留 headers(从 >) 开始。我正在寻找一个正则表达式,它将匹配 ACGT 旁边的连字符,但排除以 [=17= 开头的匹配项] 字符.

期望的输出

>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)? 但它匹配每个连字符。

匹配以 ACGT 开头的连字符:(?<=[ACGT])-

所以这并不能完全找到连字符,但它会找到任何组合 ACGT,包括 [=15] =].这是 regex:

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

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