Разделить строку перед каждым вхождением ATG
просто, просто используйте
result = subject.split(/(?=ATG)/i);
(?=ATG)
- это положительное прогнозное утверждение, означающее «Утверждение, что вы можете сопоставить ATG
, начиная с текущей позиции в строке».
Это разделит GGGATGTTTATGGGGATGCCC
на GGG
, ATGTTT
, ATGGGG
и ATGCCC
.
Итак, теперь у вас есть массив (в данном случае четыре) строк. Теперь я пойду и возьму их, откажусь от первого (этот никогда не будет содержать и не будет начинаться с ATG
), а затем присоединюсь к строкам №. 2 + ... + n
, затем 3 + ... + n
и т. Д., Пока вы не исчерпали список.
Конечно, это регулярное выражение не выполняет никакой проверки в отношении того, содержит ли строка только ACGT
символов, поскольку соответствует только позициям между символами, так что это должно быть сделано раньше, т.е. е. что входная строка соответствует /^[ACGT]*$/i
.