У меня возникли проблемы с получением регулярного выражения Python при сопоставлении с текстом, который охватывает несколько строк. Пример текста («\ п» перевод строки)Регулярное выражение, соответствующее многострочному блоку текста
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) был некотором _. Варьирование _ Текст и группа (2) должны быть линией1 + строка2 + строка3 + и т. Д. До тех пор, пока не встретится пустая строка.
Если кто-то любопытен, его предполагается представлять собой последовательность аминокислот, составляющих белок.
Есть ли что-то еще в файле, кроме первой строки и верхнего регистра? Я не уверен, почему вы будете использовать регулярное выражение, а не разделять текст на символы новой строки и считать первый элемент «some_Varying_TEXT». – UncleZeiv
yes, regex - неправильный инструмент для этого. – hop
Ваш образец текста не имеет символа ведущего '>'. Должно ли это? – MiniQuark