У меня возникли некоторые проблемы с тем, чтобы регулярное выражение Python работало при сопоставлении текста, который занимает несколько строк. Пример текста ('\ n' - это новая строка)
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).
Я хотел бы зафиксировать две вещи: часть some_Varying_TEXT и все строки текста в верхнем регистре, которые идут двумя строками ниже, за один захват (я могу вырезать символы новой строки позже). Я пробовал несколько подходов:
re.compile(r"^>(\w+)$$([.$]+)^$", re.MULTILINE) # try to capture both parts
re.compile(r"(^[^>][\w\s]+)$", re.MULTILINE|re.DOTALL) # just textlines
и множество его вариаций безуспешно. Последний, кажется, соответствует строкам текста одну за другой, что мне не очень нужно. Я могу уловить первую часть, без проблем, но я не могу уловить 4-5 строк текста в верхнем регистре. Я бы хотел, чтобы match.group (1) была some_Varying_Text, а группа (2) была line1 + line2 + line3 + и т.д., пока не встретится пустая строка.
Если кому-то интересно, это должна быть последовательность аминокислот, из которых состоит белок.