gpt4 book ai didi

javascript - 使用正则表达式在 JS 中拆分核苷酸序列

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:51:55 26 4
gpt4 key购买 nike

我正在尝试使用正则表达式将核苷酸序列拆分为氨基酸串。我必须在每次出现字符串“ATG”时开始一个新字符串,但我不想真正在“ATG”处停止第一个匹配项。有效输入是 As、Cs、Gs 和 Ts 的任意顺序。

例如,给定输入字符串:ATGAACATAGGACATGAGGAGTCA我应该得到两个字符串:ATGAACATAGGACATGAGGAGTCA(整个字符串)和 ATGAGGAGTCA(“ATG”之后的第一场比赛)。包含 n 次“ATG”的字符串应产生 n 个结果。

我认为表达式/(?:[ACGT]*)(ATG)[ACGT]*/g 会起作用,但它不起作用。如果这不能用正则表达式来完成,那么只写出代码就足够容易了,但我总是更喜欢一个优雅的解决方案(如果有的话)。

最佳答案

如果你真的想使用正则表达式,试试这个:

var str = "ATGAACATAGGACATGAGGAGTCA",
re = /ATG.*/g, match, matches=[];
while ((match = re.exec(str)) !== null) {
matches.push(match);
re.lastIndex = match.index + 3;
}

但是要小心 exec 和改变索引。您可以轻松地使其成为无限循环。

否则,您可以使用 indexOf 查找索引并使用 substr 获取子字符串:

var str = "ATGAACATAGGACATGAGGAGTCA",
offset=0, match=str, matches=[];
while ((offset = match.indexOf("ATG", offset)) > -1) {
match = match.substr(offset);
matches.push(match);
offset += 3;
}

关于javascript - 使用正则表达式在 JS 中拆分核苷酸序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3048597/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com