У меня есть текстовый файл, из которого я хочу извлечь текст между всеми заголовками. Небольшая часть текстового файла может быть доступна по следующей ссылке:
https://docs.google.com/document/d/1qgxkEpPvXNm_cpJaP4gmhkF-w2UOjeBynnxFvfzQNGM/edit?usp=sharing
Текст в том же порядке, как показано в ссылке. Заголовки указаны заглавными буквами, нумерация в том же формате, что и в ссылке. Они содержат только три специальных символа: &, /, и -. Кроме того, заголовкам предшествуют и следуют пустые строки, аналогичные тем, которые показаны в тексте в ссылке.
Я хочу извлечь текст между заголовками, например, между 3.0 ЗАДЕРЖКА БЕЗОПАСНОСТИ / ЗАДЕРЖКА ДЕНЕГ и 4.0 ЗАДАНИЕ МОБИЛИЗАЦИИ.
Я использую следующее регулярное выражение:
regex_clause_des=r'(^\d+[.][0]\s+(?:[-/&,]*\s*[A-Z]+\s*)+)(.*?)(?=(^\d+[.][0]\s+(?:[-/&,]*\s*[A-Z]+\s*)+))'
regex = re.compile(regex_clause_des, re.DOTALL)
re.findall(regex,contract_text)
Однако для его работы на процессоре 8-го поколения i5 требуется много времени (более 2 часов и он все еще работает).
Является ли регулярное выражение, которое я использую, правильным для нужного результата и есть ли другой способ получить результаты быстрее (возможно, с помощью другого регулярного выражения)?
Ожидаемый вывод - это список текста между заголовками.