如何通过名称访问捕获组?

时间:2019-09-22 08:04:57

标签: regex kotlin named-captures

说我有一个MatchResult m

>>> var m = Regex("(?<foo>hello) world").find("hello world")!!

如何通过名称访问名为“ foo”的组?根据文档,MatchGroupCollection实现了get(String) operator,但如果尝试,则会出现异常:

>>> m.groups["foo"]
error: type mismatch: inferred type is String but Int was expected
m.groups["foo"]
         ^

1 个答案:

答案 0 :(得分:0)

MatchNamedGroupCollection允许按名称获取,MatchGroupCollection仅允许按整数索引获取。

因此,在按名称获取匹配项之前,您需要检查组类型。

类似(m.groups as MatchNamedGroupCollection)["foo"]