티스토리 뷰

공부

[kotlin] regex match value

승가비 2023. 1. 24. 05:38
728x90

https://stackoverflow.com/questions/37088679/kotlin-regex-named-groups-support/75214786#75214786

 

Kotlin Regex named groups support

Does Kotlin have support for named regex groups? Named regex group looks like this: (?<name>...)

stackoverflow.com

fun regex(regex: Regex, input: String, group: String): String {
    return regex
        .matchEntire(input)!!
        .groups[group]!!
        .value
}

@Test
fun regex() {
    // given
    val expected = "s3://asdf/qwer"

    val pattern = "[\\s\\S]*Location\\s+(?<s3>[\\w/:_-]+)[\\s\\S]*"
    val input = """
        ...
        ...
        Location    s3://asdf/qwer
        Serde Library    org.apache.hadoop.hive.ql.io.orc.OrcSerde
        InputFormat    org.apache.hadoop.hive.ql.io.orc.OrcInputFormat
        OutputFormat    org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat
    """.trimIndent()
    val group = "s3"

    // when
    val actual = CommonUtil.regex(pattern.toRegex(), input, group)

    // then
    assertEquals(expected, actual)
}
728x90
댓글