У меня возникли проблемы с тем, что регулярное выражение 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 и group (2), чтобы быть line1 + line2 + line3 + и т.д. До тех пор, пока не встретится пустая строка.
Если кому-то интересно, то он должен быть последовательностью аминокислот, составляющих белок.