使用Java 10时,无法按名称获取匹配结果

时间:2018-04-26 17:13:13

标签: kotlin

标题说明了一切:

在opensuse上测试的Java版本信息: java版" 10.0.1" 2018年4月17日 Java(TM)SE运行时环境18.3(版本10.0.1 + 10) Java HotSpot(TM)64位服务器VM 18.3(版本10.0.1 + 10,混合模式)

堆栈跟踪:

java.lang.UnsupportedOperationException:此平台不支持按名称检索组。 at kotlin.internal.jdk8.JDK8PlatformImplementations.getMatchResultNamedGroup(JDK8PlatformImplementations.kt:28) at kotlin.text.MatcherMatchResult $ groups $ 1.get(Regex.kt:260) at kotlin.text.jdk8.RegexExtensionsJDK8Kt.get(RegexExtensions.kt:33)

问题:这会被解决吗? 我很确定我可以获得第一个正则表达式,但在许多其他情况下这可能是不可能的。

感谢您的帮助(抱歉格式化,从移动网站发布)

2 个答案:

答案 0 :(得分:1)

它是在 Android (Java 8) 中复制的。使用

REGULAR_EXPRESSION.toRegex().find(sample)?.groupValues?.getOrNull(1)

相反,需要的组从 1 开始(另见 https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/-match-result/group-values.html)。

答案 1 :(得分:0)

根据问题KT-20865,此问题已在Kotlin 1.3.20中修复