在多行中拆分RegEx

时间:2018-03-31 20:44:45

标签: regex kotlin

我已经很久了RegEx

val regEx = """(?i)((where|were|\bw)\s*(are|r)\s*(you|u))
|(Dónde estás)|(Donde estas)
|(Ku jeni ju)|(Non zaude)|(Дзе вы знаходзіцеся)|(Gdje si ti)|(Къде си)|(On ets)
|(Gdje si)|(Kde jsi)|(Hvor er du)|(Waar ben je)|(Kus sa oled)|(Missä sinä olet)
|(Où es tu)|(Onde estás)|(Wo bist du)|(Που είσαι)|(Merre jársz)|(Hvar ertu)
|(Hvor er du)|(Gdzie jesteś)|(Onde está você)|(Unde esti)|(Где ты)|(Где си)
|(Kde si)|(Kje si)|(Var är du)|(Де ти)|(Ble ydych chi)|(ווו זענען איר)
|(Որտեղ եք դուք)|(Haradasan)|(你在哪里)|(你在哪裡)|(სად ხარ)|(Ubi es)
|(Qhov twg yog koj)|(どこにいますか)|(Сен қайдасың)|(Та хаана байна вэ)|(Ту дар куҷо)
|(คุณอยู่ที่ไหน)|(اپ کہاں ہیں)|(Qayerdasiz)|(Bạn đang ở đâu)|(איפה אתה)|(کجایی)|(Neredesin)
|(Waar is jy)|(Muli kuti)|(Ina ku ke)|(Ebee ka ị nọ)|(U hokae)|(Xaggee baad joogtaa)
|(Uko wapi)|(Ibo lo wa)|(Ukuphi)|(Hain ka)|(Nasaan ka)|(Kamu di mana)
|(Aiza ianao)|(Di manakah anda)|(Kei hea koe)|(Kie vi estas)|(Ki kote w ye)
(?-i)""".toRegex()

当我按照上面的方式编写时,它没有正确执行,显然它理解由于线条分割需要额外的空间,所以我不得不在单个长行中创建它们:

val regEx = """(وينك)|(وينكي)|(وينكم)|(فينك)|(فينكي)|(فينكم)|(أين أنت)|(اين انت)|(أين أنتم)|(اين انتم)|(?i)(where|were|\bw)\s*(are|r)\s*(you|u)|(Dónde estás)|(Donde estas)|(Ku jeni ju)|(Non zaude)|(Дзе вы знаходзіцеся)|(Gdje si ti)|(Къде си)|(On ets)|(Gdje si)|(Kde jsi)|(Hvor er du)|(Waar ben je)|(Kus sa oled)|(Missä sinä olet)|(Où es tu)|(Onde estás)|(Wo bist du)|(Που είσαι)|(Merre jársz)|(Hvar ertu)|(Hvor er du)|(Gdzie jesteś)|(Onde está você)|(Unde esti)|(Где ты)|(Где си)|(Kde si)|(Kje si)|(Var är du)|(Де ти)|(Ble ydych chi)|(ווו זענען איר)|(Որտեղ եք դուք)|(Haradasan)|(你在哪里)|(你在哪裡)|(სად ხარ)|(Ubi es)|(Qhov twg yog koj)|(どこにいますか)|(Сен қайдасың)|(Та хаана байна вэ)|(Ту дар куҷо)|(คุณอยู่ที่ไหน)|(اپ کہاں ہیں)|(Qayerdasiz)|(Bạn đang ở đâu)|(איפה אתה)|(کجایی)|(Neredesin)|(Waar is jy)|(Muli kuti)|(Ina ku ke)|(Ebee ka ị nọ)|(U hokae)|(Xaggee baad joogtaa)|(Uko wapi)|(Ibo lo wa)|(Ukuphi)|(Hain ka)|(Nasaan ka)|(Kamu di mana)|(Aiza ianao)|(Di manakah anda)|(Kei hea koe)|(Kie vi estas)|(Ki kote w ye)(?-i)""".toRegex()

将它们分成多行的正确方法是什么,以便代码易于阅读:

下面是代码块:

val regEx = """(وينك)|(وينكي)|(وينكم)|(فينك)|(فينكي)|(فينكم)|(أين أنت)|(اين انت)|(أين أنتم)|(اين انتم)|(?i)(where|were|\bw)\s*(are|r)\s*(you|u)|(Dónde estás)|(Donde estas)|(Ku jeni ju)|(Non zaude)|(Дзе вы знаходзіцеся)|(Gdje si ti)|(Къде си)|(On ets)|(Gdje si)|(Kde jsi)|(Hvor er du)|(Waar ben je)|(Kus sa oled)|(Missä sinä olet)|(Où es tu)|(Onde estás)|(Wo bist du)|(Που είσαι)|(Merre jársz)|(Hvar ertu)|(Hvor er du)|(Gdzie jesteś)|(Onde está você)|(Unde esti)|(Где ты)|(Где си)|(Kde si)|(Kje si)|(Var är du)|(Де ти)|(Ble ydych chi)|(ווו זענען איר)|(Որտեղ եք դուք)|(Haradasan)|(你在哪里)|(你在哪裡)|(სად ხარ)|(Ubi es)|(Qhov twg yog koj)|(どこにいますか)|(Сен қайдасың)|(Та хаана байна вэ)|(Ту дар куҷо)|(คุณอยู่ที่ไหน)|(اپ کہاں ہیں)|(Qayerdasiz)|(Bạn đang ở đâu)|(איפה אתה)|(کجایی)|(Neredesin)|(Waar is jy)|(Muli kuti)|(Ina ku ke)|(Ebee ka ị nọ)|(U hokae)|(Xaggee baad joogtaa)|(Uko wapi)|(Ibo lo wa)|(Ukuphi)|(Hain ka)|(Nasaan ka)|(Kamu di mana)|(Aiza ianao)|(Di manakah anda)|(Kei hea koe)|(Kie vi estas)|(Ki kote w ye)(?-i)""".toRegex()

fun main(args: Array<String>) {
    val text : String = "where r u"
    val matchResult = regEx.find(text)
    println("Hello, world!: ${matchResult?.value.orEmpty()}")
}

2 个答案:

答案 0 :(得分:3)

在这种情况下,您应该只使用replace删除换行符:

val regEx = """long
string
with
breaks""".replace("\n", "").toRegex()

要删除边距,您可以添加#作为边距,以区别于| or中使用的reqex并使用trimMargin

val regEx = """
    (وينك)|(وينكي)|(وينكم)|(فينك)|(فينكي)|(فينكم)|(أين أنت)|(اين انت)|(أين أنتم)|(اين انتم)#
    #|(?i)
    #(where|were|\bw)\s*(are|r)\s*(you|u)|(Dónde estás)|(Donde estas)|(Ku jeni ju)
    #|(Non zaude)|(Дзе вы знаходзіцеся)|(Gdje si ti)|(Къде си)|(On ets)|(Gdje si)|(Kde jsi)
    #|(Hvor er du)|(Waar ben je)|(Kus sa oled)|(Missä sinä olet)|(Où es tu)|(Onde estás)
    #|(Wo bist du)|(Που είσαι)|(Merre jársz)|(Hvar ertu)|(Hvor er du)|(Gdzie jesteś)
    #|(Onde está você)|(Unde esti)|(Где ты)|(Где си)|(Kde si)|(Kje si)|(Var är du)
    #|(Де ти)|(Ble ydych chi)|(ווו זענען איר)|(Որտեղ եք դուք)|(Haradasan)|(你在哪里)|(你在哪裡)
    #|(სად ხარ)|(Ubi es)|(Qhov twg yog koj)|(どこにいますか)|(Сен қайдасың)|(Та хаана байна вэ)
    #|(Ту дар куҷо)|(คุณอยู่ที่ไหน)|(اپ کہاں ہیں)|(Qayerdasiz)|(Bạn đang ở đâu)|(איפה אתה)|(کجایی)
    #|(Neredesin)|(Waar is jy)|(Muli kuti)|(Ina ku ke)|(Ebee ka ị nọ)|(U hokae)
    #|(Xaggee baad joogtaa)|(Uko wapi)|(Ibo lo wa)|(Ukuphi)|(Hain ka)|(Nasaan ka)|(Kamu di mana)
    #|(Aiza ianao)|(Di manakah anda)|(Kei hea koe)|(Kie vi estas)|(Ki kote w ye)
    #(?-i)""".trimMargin("#").replace("\n","").toRegex()

答案 1 :(得分:0)

我发现最好的方法可能是:

val regEx = """
    (وينك)|(وينكي)|(وينكم)|(فينك)|(فينكي)|(فينكم)|(أين أنت)|(اين انت)|(أين أنتم)|(اين انتم)
    |(?i)
    (where|were|\bw)\s*(are|r)\s*(you|u)|(Dónde estás)|(Donde estas)|(Ku jeni ju)
    |(Non zaude)|(Дзе вы знаходзіцеся)|(Gdje si ti)|(Къде си)|(On ets)|(Gdje si)|(Kde jsi)
    |(Hvor er du)|(Waar ben je)|(Kus sa oled)|(Missä sinä olet)|(Où es tu)|(Onde estás)
    |(Wo bist du)|(Που είσαι)|(Merre jársz)|(Hvar ertu)|(Hvor er du)|(Gdzie jesteś)
    |(Onde está você)|(Unde esti)|(Где ты)|(Где си)|(Kde si)|(Kje si)|(Var är du)
    |(Де ти)|(Ble ydych chi)|(ווו זענען איר)|(Որտեղ եք դուք)|(Haradasan)|(你在哪里)|(你在哪裡)
    |(სად ხარ)|(Ubi es)|(Qhov twg yog koj)|(どこにいますか)|(Сен қайдасың)|(Та хаана байна вэ)
    |(Ту дар куҷо)|(คุณอยู่ที่ไหน)|(اپ کہاں ہیں)|(Qayerdasiz)|(Bạn đang ở đâu)|(איפה אתה)|(کجایی)
    |(Neredesin)|(Waar is jy)|(Muli kuti)|(Ina ku ke)|(Ebee ka ị nọ)|(U hokae)
    |(Xaggee baad joogtaa)|(Uko wapi)|(Ibo lo wa)|(Ukuphi)|(Hain ka)|(Nasaan ka)|(Kamu di mana)
    |(Aiza ianao)|(Di manakah anda)|(Kei hea koe)|(Kie vi estas)|(Ki kote w ye)
    (?-i)""".trimIndent().replace("\n","").toRegex()