Regex не видит последнюю строку - PullRequest
0 голосов
/ 28 октября 2018

Почему, если взять это регулярное выражение, мои две последние строки не совпадают, но только последняя не должна сравниваться с этим

Regex("""((([0-1][0-9]|2[0-3]):([0-5]\d|60):([0-5]\d|60))\n)+""")

, и когда я пишу так

Regex("""((([0-1][0-9]|2[0-3]):([0-5]\d|60):([0-5]\d|60))\n?)+""")

последняя строкане подходит это регулярное выражение

мой текст

13:15:19
07:26:57
10:00:03
19:56:14
13:15:19
00:40:31

я читаю его из файла и затем сопоставляю их вот так

val format = Regex("""(([0-1]\d:|2[0-4]:)([0-5]\d|60)(:[0-5]\d|60)(\n)?)+""")
        .matches(File(inputName).readText())

, но это не правильно, потому что если между двумястроки не содержат \ n, он не будет соответствовать форматам и, как я уже говорил, даже это регулярное выражение не видит последнюю строку.Что я делаю не так?я уже сделал с этим кодом, но не знаю, что не так с другим решением

File(inputName).readLines().map { it ->
    val f = Regex("""(([0-1]\d:|2[0-4]:)([0-5]\d|60)(:[0-5]\d|60)(\n)?)""")
            .matches(it)
    if (!f) {
        throw IllegalArgumentException("File format")
    }
}

это две строки

val ss = "00:40:31\n" +
        "07:26:57\n" +
        "10:00:03\n" +
        "13:15:19\n" +
        "13:15:19\n" +
        "19:56:14"
println(Regex("""(([0-1]\d:|2[0-4]:)([0-5]\d|60)(:[0-5]\d|60)(\n|$))+""")
        .matches(ss))
println(File(inputName).readText())
val format = Regex("""(([0-1]\d:|2[0-4]:)([0-5]\d|60)(:[0-5]\d|60)(\n|$))+""")
        .matches(File(inputName).readText())
println(format)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...