Это кажется простой задачей, но я погрузились достаточно времени в это, наконец, обратиться за помощью:Python регулярное выражение, повторяющиеся данные
У меня есть длинный текстовый файл примерно в такой форме:
Начало тестовой АБВ:
несколько строк бла-бла-бла
начала испытания wzy:
несколько строк бла-бла-бла
начала испытания QQQ:
несколько строк бла-бла-бла
Я хочу, чтобы захватить все вещи после «Начало испытаний» замедления, и это выражение получает меня примерно половину того, что мне нужно:
re.findall(r'Start of test(.+?)Start of test', curfile, re.S)
наиболее очевидный вопрос я потребляя начало того, что мне нужно искать дальше, получая таким образом примерно половину результатов, которые я хотел. Предполагая, что я мог бы избежать этого, я все еще не могу понять, как получить последний кусок, где нет «начала теста», чтобы закончить матч.
Я предполагаю, что мне нужно использовать отрицательные утверждения LOOKAHEAD, но я не много удачи выяснить, как правильно их использовать, я пытался вещи, как:
re.findall(r'Start of test(.+?)(?!Start of test)
, который не дает никакой полезной Результаты.
Это выражение получает меня на 99%, но он пропускает последний кусок, как бы я решил это? – user3552664
За последним фрагментом не следует «Начало теста», поэтому вам нужно будет либо «(? = Начало теста)», либо «$» после '(. +?)'. –
@ user3552664: Может быть, добавить в конец текста строку «Начало теста»: 're.findall (r'Start of test (. +?) (? = Начало теста) ', curfile +" \ nStart of test ", re.S)' – wallyk