Я хотел бы показать вам мой подход к проблеме, с которой я столкнулся, и, возможно, вы можете помочь мне с конкретной проблемой или даже изменить подход.
У меня есть несколько таких строк журнала, возьмем, к примеру, две:
00:00:02.673: INFO: sesison1::logging : logSessionStarted(ch...")
EntrySuccessfull::execute
Как вы можете видеть, некоторые из них имеют метку времени, а некоторые нет, проблема в том, что я хочу получить все данные до первого вхождения '::'.
Теперь со вторым случаем все просто, примерно так работает:
(.*)(?=::)
Возвращает для всего набора данных:
00:00:02.673: INFO: sesison1
EntrySuccessfull
Очевидно, что для первого ряда это не так, как мне бы хотелось. Я хотел бы получить sesision1, поэтому я пытался создать что-то вроде вида назад, пока не будет найден пробел:
(?<=\s)(.*)(?=::)
Итак, наконец, я мог бы сделать что-то вроде find '::' и вернуться до пробела или начала строки, но это второе изменение возвращает те же самые результаты, как и игнорирование пробела перед sesision1.
Есть ли лучший подход или что-то не так?
PD все тесты, выполненные с помощью блокнота ++