Mam trochę problemów z uruchomieniem wyrażenia regularnego Pythona podczas dopasowywania do tekstu obejmującego wiele wierszy. Przykładowy tekst to ('\ n' to nowa linia)
some Varying TEXT\n
\n
DSJFKDAFJKDAFJDSAKFJADSFLKDLAFKDSAF\n
[more of the above, ending with a newline]\n
[yep, there is a variable number of lines here]\n
\n
(repeat the above a few hundred times).
Chciałbym uchwycić dwie rzeczy: część „some_Varying_TEXT” i wszystkie wiersze tekstu pisanego wielkimi literami, które pojawiają się dwa wiersze poniżej w jednym ujęciu (mogę później usunąć znaki nowej linii). Próbowałem z kilkoma podejściami:
re.compile(r"^>(\w+)$$([.$]+)^$", re.MULTILINE) # try to capture both parts
re.compile(r"(^[^>][\w\s]+)$", re.MULTILINE|re.DOTALL) # just textlines
i wiele jego odmian bez powodzenia. Ta ostatnia wydaje się dopasowywać wiersze tekstu jeden po drugim, co nie jest tym, czego naprawdę chcę. Mogę złapać pierwszą część, nie ma problemu, ale nie mogę wyłapać 4-5 wierszy tekstu pisanego wielkimi literami. Chciałbym, aby match.group (1) był jakimś_Zmienny_Tekst, a grupa (2) była linią1 + linią2 + linią3 + itd. Aż do napotkania pustej linii.
Jeśli ktoś jest ciekawy, przypuszczalnie jest to sekwencja aminokwasów tworzących białko.
>
znaku wiodącego . Czy powinno?