Почему re.findall не конкретен в поиске триплетных элементов в строке. питон
Итак, у меня есть четыре строки кода
seq= 'ATGGAAGTTGGATGAAAGTGGAGGTAAAGAGAAGACGTTTGA'
OR_0 = re.findall(r'ATG(?:...){9,}?(?:TAA|TAG|TGA)',seq)
Позвольте мне объяснить, что я пытаюсь сделать в первую очередь. , , Извините, если это сбивает с толку, но я постараюсь объяснить это.
Поэтому я ищу последовательности, которые начинаются с'ATG' с последующими единицами из 3 любого слова char [например, «GGG», «GTT», «TTA» и т. Д.], Пока не встретится«TAA», «TAG» или «TGA» Я также хочу, чтобы они были длиной не менее 30 символов. , , отсюда {9,}?
Это работает в некоторой степени, но если вы заметили всл что там естьATG GAA GTT GGATGA AAG TGG AGGТАА AGA GAA GAC GTTTGA
Так что в этом случае, он должен найти 'ATGGAAGTTGGATGA', если он начинается с первого 'ATG' и продолжается до следующего«TAA», «TAG» или «TGA»
ОДНАКО, когда вы запускаете строку кода OR_0, она выплевывает всю строку seq. Я не знаю, как заставить его рассматривать только первые «TAA», «TAG» или «TGA», за которыми следует первый «ATG»
Если за «ATG» следует другое «ATG» при чтении в единицах 3, то это нормально, оно НЕ должно начинаться заново, но если встречается «TAA», «TAG» или «TGA» при чтении в единицах 3 это должно прекратиться.
Мой вопрос,почему re.findall находит самую длинную последовательность 'ATG'xxx-xxx - [' TAA ',' TAG 'или' TGA '] вместо первого появления' TAA ',' TAG 'или' TGA 'после ATG разделенные символами слова в единицах 3?
Еще раз, я прошу прощения, если это сбивает с толку, но это путается с несколькими наборами данных, которые я основал на этой исходной строке текста, и я пытаюсь выяснить, почему