Я пытаюсь разобрать журнал чата WhatsApp с помощью регулярных выражений.У меня есть решение, которое работает в большинстве случаев, но я пытаюсь его улучшить, но не знаю, как это сделать, так как я совсем новичок в regex.
Файл chat.txt выглядит следующим образом:
[06.12.16, 16:46:19] Person One: Wow thats amazing
[06.12.16, 16:47:13] Person Two: Good morning and this goes over multiple
lines as it is a very long message
[06.12.16, 16:47:22] Person Two: ::
Хотя мое решение до сих пор правильно анализировало большинство этих сообщений, однако у меня есть несколько сотен случаев, когда сообщение начинается с двоеточия, как в последнем примере выше.Это приводит к нежелательному значению Person Two: :
в качестве отправителя.
Вот регулярное выражение, с которым я работаю до сих пор:
pattern = re.compile(r'\[(?P<date>\d{2}\.\d{2}\.\d{2}),\s(?P<time>\d{2}:\d{2}:\d{2})]\s(?P<sender>(?<=\s).*(?::\s*\w+)*(?=:)):\s(?P<message>(?:.+|\n+(?!\[\d{2}\.\d{2}\.\d{2}))+)')
Любые советы о том, как можно обойти эту ошибкубыл бы оценен!