2

说我有一个: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"]
         ^
4

1 回答 1

0

它是MatchNamedGroupCollection允许按名称获取的,MatchGroupCollection唯一允许按整数索引获取的。

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

就像是:(m.groups as MatchNamedGroupCollection)["foo"]

于 2019-09-22T08:48:47.277 回答