Это регулярное выражение может выполнять эту работу:
ATG(...){30,}(TAG|TGA|TAA)
(...)
- трехбуквенный кодон, который встречается 30 или более раз с {30,} и останавливается всякий раз, когда находит один из (TAG|TGA|TAA)
.
Это регулярное выражение может помочь вам найти все ORF, и теперь вам просто нужно найти самое длинное, которое должно быть тривиальным.