Мне была дана задача найти гены, когда мне дали строку букв A, C, G или T, все подряд, как ATGCTCTCTTGATTTTTTTATGTGTAGCCATGCACACACACACATAAGA. Ген начинается с ATG и заканчивается либо TAA, TAG, либо TGA (ген исключает обе конечные точки). Ген состоит из триплетов букв, поэтому его длина кратна трем, и ни один из этих триплетов не может быть начальным / конечным триплетами, перечисленными выше. Таким образом, для строки выше генов в ней являются CTCTCT и CACACACACACA. И фактически мое регулярное выражение работает для этой конкретной строки. Вот что у меня так далеко (и я очень доволен собой, что так далеко):
(?<=ATG)(([ACGT]{3}(?<!ATG))+?)(?=TAG|TAA|TGA)
Однако, если в другом результате есть ATG и конечный триплет, и он не выровнен с триплетами этого результата, произойдет сбой. Например:
Results for TCGAATGTTGCTTATTGTTTTGAATGGGGTAGGATGACCTGCTAATTGGGGGGGGGG :
TTGCTTATTGTTTTGAATGGGGTAGGA
ACCTGC
Должен также найти GGG, но не: TTGCTTATTGTTTTGA (ATG | GGG | TAG) GA
Я новичок в регулярных выражениях в целом и немного застрял ... просто небольшой намек был бы потрясающим!