import java.util.*
fun main(args: Array<String>) {
data class Journal(val timestamp: String, val text: String)
val timestampPattern = """\d{2}-\d{2}-\d{4}\h+\d{2}:\d{2}:\d{2}"""
val journalRegex = """^($timestampPattern)\h*-\h*(.*(?:\R(?!$timestampPattern).*)*)""".toRegex(RegexOption.MULTILINE)
val journals = """
28-03-2020 23:00:00 - This
is
line
1
28-03-2021 14:23:15 - This
is
line
2
""".trimIndent()
journalRegex.findAll(journals)
.map { it.destructured }
.map { (first, second) -> Journal(text = second, timestamp = first) }
.forEachIndexed { index, journal -> println("Match #${index + 1}: $journal") }
}
aW1wb3J0IGphdmEudXRpbC4qCiAKZnVuIG1haW4oYXJnczogQXJyYXk8U3RyaW5nPikgewogICAgZGF0YSBjbGFzcyBKb3VybmFsKHZhbCB0aW1lc3RhbXA6IFN0cmluZywgdmFsIHRleHQ6IFN0cmluZykKICAgIHZhbCB0aW1lc3RhbXBQYXR0ZXJuID0gIiIiXGR7Mn0tXGR7Mn0tXGR7NH1caCtcZHsyfTpcZHsyfTpcZHsyfSIiIgogICAgdmFsIGpvdXJuYWxSZWdleCA9ICIiIl4oJHRpbWVzdGFtcFBhdHRlcm4pXGgqLVxoKiguKig/OlxSKD8hJHRpbWVzdGFtcFBhdHRlcm4pLiopKikiIiIudG9SZWdleChSZWdleE9wdGlvbi5NVUxUSUxJTkUpCgogICAgdmFsIGpvdXJuYWxzID0gIiIiCiAgICAgICAgMjgtMDMtMjAyMCAyMzowMDowMCAtIFRoaXMKICAgICAgICBpcwogICAgICAgIGxpbmUKICAgICAgICAxCgogICAgICAgIDI4LTAzLTIwMjEgMTQ6MjM6MTUgLSBUaGlzCiAgICAgICAgaXMKICAgICAgICBsaW5lCiAgICAgICAgMgoKICAgICIiIi50cmltSW5kZW50KCkKCiAgICBqb3VybmFsUmVnZXguZmluZEFsbChqb3VybmFscykKICAgICAgICAubWFwIHsgaXQuZGVzdHJ1Y3R1cmVkIH0KICAgICAgICAubWFwIHsgKGZpcnN0LCBzZWNvbmQpIC0+IEpvdXJuYWwodGV4dCA9IHNlY29uZCwgdGltZXN0YW1wID0gZmlyc3QpIH0KICAgICAgICAuZm9yRWFjaEluZGV4ZWQgeyBpbmRleCwgam91cm5hbCAtPiBwcmludGxuKCJNYXRjaCAjJHtpbmRleCArIDF9OiAkam91cm5hbCIpIH0KfQo=