Нет лучшего способа для чего-то подобного.Это явно формат ad hoc без систематической мета-структуры (в отличие от XML, например ...)
Вы можете попробовать регулярные выражения, но я боюсь, что они будут слишком сложными.
Вы можете использовать генератор парсера, но это, вероятно, выходит за рамки ваших текущих возможностей.(В противном случае вы бы сделали это самостоятельно.)
Вместо этого я бы порекомендовал реализовать синтаксический анализатор с использованием Java Scanner
класса.Проблема контекстно-зависимых разделителей может быть решена путем изменения регулярного выражения-разделителя в зависимости от того, что вы ожидаете дальше, или с помощью Scanner.nextLine()
, чтобы получить остаток строки независимо от разделителей.*
Одна из проблем с такими вопросами заключается в том, что у вас нет четко определенного формата.Вместо этого вы только что показали нам простой пример.Этот пример может быть типичным , но он не касается крайних случаев.(Вы уже определили, по крайней мере, один из них.) И это также повышает вероятность того, что невозможно проанализировать записи файла журнала без встраивания «бизнес-знаний» в анализатор;Например, даты всегда будут в определенном формате, или что названия компаний никогда не будут содержать двоеточия.И если вы на самом деле не знаете, что это за правила (например, потому что они нигде не указаны должным образом), то ваш парсер будет хрупким.