Исходя из вашего примера, у вас есть куча разных вложенных подформатов, которые по отдельности очень легко анализируются.То, что может быть подавляющим, является большим количеством форматов и фактом, что они могут быть вложены различными способами.
На самом нижнем уровне у вас есть набор значений, разделенных пробелами, в одной строке.Эти линии объединяются в блоки, и как блоки объединяются и вкладываются друг в друга, является сложной частью.Этот тип выходных данных предназначен для чтения человеком и никогда не предназначался для того, чтобы его «возвращали» обратно в машиночитаемую форму.
Сначала я хотел бы связаться с автором программного обеспечения и выяснить, есть ли альтернативный формат вывода, например, XML или CSV.Если все сделано правильно (т. Е. Не только в формате печати, завернутом в неуклюжий XML, или с запятыми, заменяющими пробелы), это будет намного проще в обработке.В противном случае я бы попытался придумать иерархический список форматов и того, как они вкладываются.Например,
ESTIMATED SAMPLE STATISTICS
начинает блок - В этом блоке
MEANS/INTERCEPTS/THRESHOLDS
начинается вложенный блок - Следующие две строки представляют собой набор заголовков столбцов
- Далее следуют одна (или несколько?) Строк данных, с заголовком строки и значениями данных
И так далее.Если вы подойдете к каждой из этих проблем в отдельности, вы обнаружите, что это утомительно, но не сложно.Думайте о каждом из вышеперечисленных шагов как о модулях, которые проверяют входные данные, чтобы определить, совпадает ли он и, если он есть, затем вызывать другие модули для дальнейшего тестирования на предмет того, что может произойти «внутри» блока, возвращаясь назад, если вы добираетесь до того, что нене соответствует тому, что вы ожидаете (кстати, это называется «рекурсивное снижение»).
Обратите внимание, что вам все равно придется делать что-то подобное, чтобы построить версию данных в памяти («модель данных»), с которой вы можете работать.