Kotlin Regex named groups support

2020-07-02 01:45发布

问题:

Does Kotlin have support for named regex groups?

Named regex group looks like this: (?<name>...)

回答1:

According to this discussion,

This will be supported in Kotlin 1.1. https://youtrack.jetbrains.com/issue/KT-12753

Kotlin 1.1 EAP is already available to try.


"""(\w+?)(?<num>\d+)""".toRegex().matchEntire("area51")!!.groups["num"]!!.value

You'll have to use kotlin-stdlib-jre8.



回答2:

As of Kotlin 1.0 the Regex class doesn't provide a way to access matched named groups in MatchGroupCollection because the Standard Library can only employ regex api available in JDK6, that doesn't have support for named groups either.

If you target JDK8 you can use java.util.regex.Pattern and java.util.regex.Matcher classes. The latter provides group method to get the result of named-capturing group match.